package demo01;
public class Peson {
//写实体类对象的时候,尽量使用包装类对象,方便后续修改,维护
private Integer id;
public String name;
String address;
public Peson() {
}
public Peson(String name) {
}
private Peson(String name,Integer id) {
}
@Override
public String toString() {
return "Peson [id=" + id + ", name=" + name + ", address=" + address + "]";
}
}
package demo01;
import java.lang.reflect.Constructor;
public class DemoTest02 {
public static void main(String[] args) throws Exception {
/*
// 第一种方法获取字节码文件
Class name = Class.forName("demo01.Peson");//不加泛型默认是Object对象
System.out.println(name);
//第二种 调用它的方法
Peson p=new Peson();
Class class1 = p.getClass();
System.out.println(class1);
//第三种 调用他的属性
Class c=Peson.class;
System.out.println(c);
Class forName = Class.forName("demo01.Peson");
Constructor[] constructors = forName.getConstructors();
for (Constructor constructor : constructors) {
System.out.println(constructor);
}
Class<Peson> forName1 = (Class<Peson>) Class.forName("demo01.Peson");
Constructor<?>[] constructors2 = forName1.getDeclaredConstructors();
for (Constructor<?> constructor : constructors2) {
System.out.println(constructor);
}
// ...0-n个可变参数
// 获取单个构造方法
Constructor constructor = forName1.getDeclaredConstructor(String.class, Integer.class);
System.out.println(constructor);
*/
// ...0-n个可变参数
// 获取单个无参构造方法
Class forName1 = Class.forName("demo01.Peson");
Constructor<Peson> constructor1 = forName1.getDeclaredConstructor();
System.out.println(constructor1);
//通过构造器中的构造方法的方法来穿创建对象,传统的创建对象的方法是Peson p=new Peson();
Peson instance = constructor1.newInstance();
System.out.println(instance);//demo01.Peson@15db9742 没有重新toString()方法,就会返回一个地址
}
}