代码示例
package com.atguigu.reflect;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class ReflectTest {
public static void main(String[] args) {
try {
Class<?> clazz = Class.forName("com.atguigu.reflect.Student");
Object object = clazz.newInstance();
Field f1_age = clazz.getDeclaredField("age");
f1_age.setAccessible(true);
f1_age.set(object, 20);
System.out.println(object);
Method method = clazz.getMethod("add", int.class,double.class);
Object invoke = method.invoke(object, 100,20.22);
System.out.println(invoke);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
abstract class Parent<T> {
private Class clazz;
public Parent() {
Type type = getClass().getGenericSuperclass();
if(type instanceof ParameterizedType) {
ParameterizedType ptype = (ParameterizedType) type;
Type[] types = ptype.getActualTypeArguments();
clazz = (Class) types[0];
} else {
clazz = Object.class;
}
}
}
class Child extends Parent<Integer> {}
class Child2 extends Parent{}
Entity
package com.atguigu.javase.reflect;
public class Student {
private static String school = "atguigu";
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
public static int add(int x, double y) {
return x + (int)y;
}
}
反射代码块
最新推荐文章于 2023-03-07 11:33:02 发布