黑马程序员--java反射

一句话总结反射:反射就是将java类中的各种成分映射成相应的java类

 

int.class与Integet.TYPE一样,都是返回int的Class实例

Class类里的 isPrimitive()方法是判断这个Class对象是否是基本类型(只有在9中情况下返回true,int.class...等8中基本数据类型和void.class)

通过Class类实例,可以将类中的构造方法(Constructor),成员变量(Field),成员方法(Method),包(Package),注释(Annotation),类加载器(ClassLoader)

Class实例的三种定义方式:

String str  = "123";

Class c1 = Class.forName("java.lang.String");//这是最常用的,这样不用导入一个明确的类

Class c2 = str.getClass();

Class c3 = String.class;

这里的c1,c2,c3是相等的(既然是相等的,就不是new出来的,c1这些也是引用类型,不会存在栈中,所以他们应该存在常量池中(Class的对象对应内存中的字节码文件))

import java.lang.reflect.Constructor;

class Demo1{  

public static void main(String [] args) throws Exception{   

/*Class classString = Class.forName("java.lang.String");   

//Class classString = String.class;   

//Class class String  = new String().getClass();

  Constructor [] constructor = classString.getConstructors();   Constructor constructor1 = classString.getConstructor(String.class);

  System.out.println(constructor1);  

 for(Constructor c:constructor){    

System.out.println(c.getName());   

}*/  

 //获取String对象的方式:   

String str = null;   

//这里需要强制类型的转化,Class.forName("java.lang.String").newInstance()的   

//返回值是Object类型的   System.out.println(str);  

 //newInstance会自动初始化,不是null,难道是“”;   

String str2 = (String)Class.forName("java.lang.String").newInstance();   

System.out.println(str2);  

 Constructor constructor = String.class.getConstructor(String.class);   

//System.out.println(constructor.getName()+".....");   

String str3 = (String)constructor.newInstance(new String("123"));   

System.out.println(str3);

  

 } }

转载于:https://www.cnblogs.com/xietianhang/p/4993090.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值