使用反射 获取到继承类的属性与方法 并调用,以及实现接口的方法
时间: 2024-02-18 20:03:06 浏览: 57
Java 采用反射获取class属性值的实现代码
好的,我可以回答你的问题。使用反射可以获取继承类的属性和方法,并且可以调用它们。同时,也可以使用反射实现接口的方法。
首先,通过 Class 对象的 getDeclaredFields() 方法可以获取类的所有属性(包括私有属性),通过 getDeclaredMethods() 方法可以获取类的所有方法(包括私有方法)。然后,可以使用 Field 对象的 get() 方法获取属性的值,使用 Method 对象的 invoke() 方法调用方法。
下面是一个示例代码:
```java
public class MyClass {
private String myField;
public void myMethod() {
System.out.println("Hello World!");
}
}
public class Main {
public static void main(String[] args) throws Exception {
Class<?> clazz = MyClass.class;
Object obj = clazz.newInstance();
// 获取属性值
Field field = clazz.getDeclaredField("myField");
field.setAccessible(true);
String value = (String) field.get(obj);
System.out.println(value);
// 调用方法
Method method = clazz.getDeclaredMethod("myMethod");
method.setAccessible(true);
method.invoke(obj);
}
}
```
另外,使用反射也可以实现接口的方法。可以通过 getInterfaces() 方法获取类实现的接口,然后通过反射获取接口中的方法并调用。下面是一个示例代码:
```java
public interface MyInterface {
void myInterfaceMethod();
}
public class MyClass implements MyInterface {
public void myInterfaceMethod() {
System.out.println("Hello Interface!");
}
}
public class Main {
public static void main(String[] args) throws Exception {
Class<?> clazz = MyClass.class;
Object obj = clazz.newInstance();
// 实现接口方法
Class<?>[] interfaces = clazz.getInterfaces();
Method method = interfaces[0].getDeclaredMethod("myInterfaceMethod");
method.invoke(obj);
}
}
```
以上就是使用反射获取继承类的属性和方法,并调用它们,以及实现接口的方法的方法。
阅读全文