反射是获取摸个类的所有对象
构造器 :成员变量: 成员方法
获取方式
package Reflect;
//获取class类的对象
public class Test1Clacc {
public static void main(String[] args)throws Exception {
Class c1=Student.class;
System.out.println(c1.getName()); //全类名
System.out.println(c1.getSimpleName()); //简名
Class c2= Class.forName("Reflect.Student");
System.out.println(c1==c2);
Student s= new Student();
Class c3= s.getClass();
System.out.println(c2==c3);
package Reflect;
import org.junit.Test;
import java.lang.reflect.Constructor;
public class TestConstructor {
@Test
public void TestGetConstructors() throws Exception {
//1:反射第一行必须先得到这个类的Class对象、
Class c=Cat.class;
// 获取类的全部构造器
// Constructor[] constructors= c.getConstructors(); //只能拿public修饰的
Constructor[] constructors= c.getDeclaredConstructors(); // 只能存在就拿到 不管修饰符
for (Constructor constructor : constructors) {
System.out.println(constructor.getName()+"================>"
+constructor.getParameterCount());
}
}
@Test
public void TestGetConstructor() throws Exception{
//1:反射第一行必须先得到这个类的class对象
Class c= Cat.class;
//2:获取某个构造器 无参的
//Constructor constructor= c.getConstructor();
Constructor constructor= c.getDeclaredConstructor();
System.out.println(constructor.getName()+"================>"
+constructor.getParameterCount());
//3:获取有参构造器
Constructor constructor1 = c.getDeclaredConstructor(String.class, int.class);
System.out.println(constructor1.getName()+"================>"
+constructor1.getParameterCount());
}
}
package Reflect;
public class Cat {
public String name;
public int age ;
public Cat() {
}
private Cat(String name, int age) {
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;
}
}