描述
- 客户端向服务器发送要调用的对象和方法名,服务器找到对应方法并调用执行
实现
- 客户端将类名、方法名和参数封装到可调用对象中,通过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