------- android培训、java培训、期待与您交流! ----------
java类用于描述一类事物的共性,该类事物有什么属性,没有什么属性,至于这个属性的值是什么,则是由这个类的实力对象来确定的,不同的
实力对象有不同的属性值。java程序中的各个java类,他们是否属于同一类事物,是不是可以用一个累来描述这类事物呢?这个类的明智就是Class
不是class。
对应各个类加载器加载到内存中,占用一片存储空间,这个空间里面的内容就是类的字节码,不同的类的字节码是不on过得,所以他们在内存中的
内容是不同的,这一个个的就on感觉可分别用一个个的对象来表示,这些对象都具有相同的类型。
int.class==Integer.TYPE
Class.isArray()
如:
public class ReflectTest {
public static void main(String[] args) throws Exception{
String str1 = "abc";
Class cls1 = str1.getClass();
Class cls2 = String.class;
Class cls3 = Class.forName("java.lang.String");
System.out.println(cls1 == cls2);//结果:true
System.out.println(cls2 == cls3);//结果:true
System.out.println(cls1.isPrimitive());//isPrimitive()是否是原是类型 结果:false
System.out.println(int.class.isPrimitive());//结果:true
System.out.println(int.class == Integer.class);//结果:false
}
}
反射就是把java类中的各种成分映射成相应的java类。
Constructor类
得到某个类所有的构造方法:
如:Constructor [] constructors=Class.forName("java.lang.String").getConstructors();
得到某一个构造方法:
如:Constructor constructor=Class.forName("java.lang.String").getConstructor(StringBuffer.class);
创建实例对象:
通常方式:String str=new String(new StringBuffer("abc"));
反射方式:String str=(String)constructor.newInstance(new StringBuffer("abc"));
//new StringBuffer(new StringBuffer("abc"))
Constructor constructor1=String.class.getConstructor(StringBuffer.class);
String str2=(String)constructor1.newInstance(new StringBuffer("abc"));
System.out.println(str2);
调用获得的方法是要用到上面的相同类型的实例对象
Class.newInstance()方法
如:String obj=(String)Class.forName("java.lang.String").newInstnce();
该方法内部先得到默认的构造方法,然后用该构造方法创建实例对象。
该方法用到了缓存机制来保存默认构造方法的实例对象。
------- android培训、java培训、期待与您交流! ---------- 详细请查看:http://edu.csdn.net/heima/