首页 > 编程语言 >基于java反射的远程方法调用demo

基于java反射的远程方法调用demo

时间:2022-10-19 09:23:57浏览次数:53  
标签:调用 java String demo Object private public

描述

  • 客户端向服务器发送要调用的对象和方法名,服务器找到对应方法并调用执行

实现

  • 客户端将类名、方法名和参数封装到可调用对象中,通过socket的对象流将可调用对象发送到服务器上,服务器通过已建立的HashMap找到要调用的目标对象,通过Class.forName方法找到对应的class对象,通过getMethod方法找到要调用的方法,通过method.invoke进行调用

结构

  • 共四个类,Call.java封装了可调用对象
  • HelloRemote.java封装了目标对象
  • Client.java和Server.java分别处理客户端和服务器业务

Call.java代码

import java.io.Serializable;

public class Call implements Serializable{
    private static final long serialVersionUID = 6597953547331194808L;
    private String className;
    private String methodName;
    private Class [] paramTypes;
    private Object [] params;
    private Object result;

    public Call() {}

    public Call(String className, String methodName, Class[] paramTypes, Object[] params){
        this.className = className;
        this.methodName = methodName;
        this.paramTypes = paramTypes;
        this.params = params;
    }

    public String getClassName(){
        return className;
    }

    public String getMethodName(){
        return methodName;
    }

    public Class[] getParamTypes(){
        return paramTypes;
    }

    public Object[] getParams(){
        return params;
    }

    public void setResult(Object result){
        this.result = result;
    }

    public Object getResult(){
        return result;
    }

    public String toString(){
        return "[来自客户端的消息] 小王同学你好,我是" + params[0] + ",向你请求的类名是:" + className + ",方法名是:" + methodName;
    }
}

标签:调用,java,String,demo,Object,private,public
From: https://www.cnblogs.com/z5onk0/p/16804993.html

相关文章

  • Java
    配置环境我的JDK文件夹如下:jdk-17_windows-x64_binJRE_1.7.0openjdk-11+28_windows-x64_bin在Path中配置JAVA_HOME,并选定bin的父目录【如D:\Software\JDK\o......
  • Java设计模式 —— 外观模式
    13外观模式13.1外观模式概述FacadePattern:为子系统的接口提供一组统一的入口。外观模式定义了一个高层接口,这个接口使得子系统的更加容易使用。在外观模式中,一......
  • Java I/O(2):NIO中的Channel
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~   为了解决标准JavaI/O令人难以忍受的效率问题,从JDK1.4开始,NIO出现了(Non-blockingI/O,官方称之为NewI/O)。NIO不但......
  • Java设计模式 —— 装饰模式
    12装饰模式12.1装饰模式概述DecoratorPattern:动态地给一个对象增加一些额外的职责。提供一种比使用子类更加灵活的方案来扩展功能。装饰模式是一种用于替代继......
  • Java云原生崛起微服务框架Quarkus入门实践
    @目录概述定义GraalVM简介为何使用特性官方性能实战入门示例步骤安装GraalVM创建quarkus工程Idea导入项目Idea运行和调试打包成普通的Jar打包成依赖GraalVM二进制文件打包......
  • java -jar 启动带有参数
    java-Xms512M-Xmx512M-Dserver.port=8700-Dspring.config.location=/iflytek/conf/wm-2.1.0/wm-rest.properties-Deureka.client.serviceUrl.defaultZone=http://10......
  • Java中使用List的add方法后元素相同问题
    在写JavaWeb时,我在后端通过JDBC读取了数据后逐个使用List.add()方法添加元素并通过request方法传给jsp页面解析,但是添加以后出现了在列表里有n个(假设添加了n个元素)最后一个......
  • Java动态绑定机制
    本文主要记录韩顺平老师讲解动态绑定机制过程中提到的重点,本文转载此篇博客【Java】动态绑定机制,并对其进行一定的补充,如有侵权会删除。特点当调用对象方法的时候,该方法......
  • Java 集合简介 一
    什么是集合?集合就是由若干个确定的元素所构成的整体。例如,5只小兔构成的集合:在数学中,我们经常遇到集合的概念。例如:●有限集合○一个班所有的同学构成的集合;○一......
  • JavaScript学习--Array数组对象
    定义1.var变量名=newArray(元素列表);如vararr=newArray(1,2,3);2.常用:var变量名=[元素列表];如vararr=[1,2,3];访问arr[索引]=值;如arr[0]=1;ps:数组长度类型均可变 len......