java.lang.reflect
包
Construct
类获取构造方法信息
Method
类获取成员方法信息
Field
类获取成员变量信息
反射机制在网络编程中的应用
反射机制在网络编程中的应用,实现如何在客户端通过远程方法调用服务器端的方法。
步骤
写一个
HelloService
接口,该接口具有 getTime() 和 echo() 方法创建一个 HelloServiceImpl 类并实现 HelloService 接口
需求是:
-
客户端调用服务器端 Hello-ServiceImpl 类中的 getTime() 和 echo() 方法
实现方法:
客户端需要把调用的方法名、方法参数类型、方法参数值,以及方法所属的类名或接口名发送给服务器端。服务器端再调用相关对象的方法,然后把方法的返回值发送给客户端。
写一个Call类去实现:
package PracticeReview.RemoteCall;
/**
* Call类,实现反射的远程通信
* @since JDK 1.8
* @date 2021/08/23
* @author Lucifer
*/
public class Call {
private static final long serialVersionUID = 6659953547331194808L;
/*类名或者接口名*/
private String className;
/*方法名*/
private String methodName;
/*方法参数类型*/
private Class[] paramType;
/*方法参数值*/
private Object[] params;
// 表示方法的执行结果
// 如果方法正常执行,则result为方法返回值,如果方法抛出异常,那么result为该异常。
private Object result;
public Call() {
}
public Call(String className, String methodName, Class[] paramType, Object[] params) {
this.className = className;
this.methodName = methodName;
this.paramType = paramType;
this.params = params;
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public String getClassName() {
return className;
}
public String getMethodName() {
return methodName;
}
public Class[] getParamType() {
return paramType;
}
public Object[] getParams() {
return params;
}
public Object getResult() {
return result;
}
public void setClassName(String className) {
this.className = className;
}
public void setMethodName(String methodName) {
this.methodName = methodName;
}
public void setParamType(Class[] paramType) {
this.paramType = paramType;
}
public void setParams(Object[] params) {
this.params = params;
}
public void setResult(Object result) {
this.result = result;
}
public String toString() {
return "className=" + className +