1、利用反射获取类的方式
类文件
package basic;
import lombok.Data;
@Data
public class Student {
private String name;
private int age;
private char sex;
public String alias;
public void study(String className) {
System.out.println(name + "study" + className);
}
}
反射
public class TestDemo {
public static void main(String[] args) throws Exception {
Class<Student> cls = Student.class;
Student student = new Student();
Class<? extends Student> aClass = student.getClass();
Class<?> aClass1 = Class.forName("basic.Student");
Student s = cls.newInstance();
String clsName = s.getClass().getName();
System.out.println("clsName = " + clsName);
Field[] fields = cls.getDeclaredFields();
for (Field field : fields) {
String name = field.getName();
System.out.println("name = " + name);
String name1 = field.getType().getName();
System.out.println("name1 = " + name1);
}
}
}
结果:
clsName = basic.Student
name = name
name1 = java.lang.String
name = age
name1 = int
name = sex
name1 = char
name = alias
name1 = java.lang.String
public static void main(String[] args) throws Exception {
Class<Student> cls = Student.class;
Method[] methods = cls.getMethods();
for (Method method : methods) {
System.out.println("method.getName() = " + method.getName());
System.out.println("method.getParameterCount() = " + method.getParameterCount());
Class<?>[] parameterTypes = method.getParameterTypes();
if (parameterTypes.length>0) {
System.out.println("parameterTypes[0].getName() = " + parameterTypes[0].getName());
}
}
Student student = cls.newInstance();
Method study = cls.getDeclaredMethod("study", String.class);
study.invoke(student,"java");
}