java反射机制

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()方法,就会返回一个地址		
		
		
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_669646

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值