在java中,创建对象的四种方式:new 、 反射、 对象克隆、 对象反序列化。
类加载的过程:加载、连接(验证,准备,解析)、初始化三个阶段。
1.所谓反射,就是指在java中,可以在运行期载入、探知和使用编译期完全未知的类,通过使用java的反射机制,来获得类的成员变量、方法、构造器等。其实就是获得类的模版(是未被初始化的),然后来调用它里面的属性、行为等。
2.反射实现有三种:

第一种方式:在编译期不知道类名,但是在运行期可以获得该类名的时候,使用Class类的forName()静态方法可以获得Class对象。
例如:

Scanner sc=new Scanner(System.in);

System.out.println(“请输入”);

String s =sc.next();

Class
c=Class.forName(s);//全限定类名是字符串形式的。//包名.类名

Field[]
allFields = c.getDeclaredFields();//得到所有声明了的属性

Field[]
allPublicFields =c.getFields();//得到所有的公共属性

Constructor[] allPublicCons =
c.getConstructors();//所有公共的构造器

Constructor[] allCons =
c.getDeclaredConstructors();//所有的构造器

Object obj = ct.newInstance() //
调用构造器

for(int
i=0;i<allPublicCons.length;i++){
//获取构造器的参数类型

if(cons[i].getGenericParameterTypes().length>0){

System.out.println(cons[i].getGenericParameterTypes()[0]);

}
}

Method m[] =
c.getDeclaredMethods();//所有的方法

for(int
i=0;i<m.length;i++){

System.out.println(m[i].toString());

}

第二种方式:

如果在编译期知道类名的情况,可以调用该类的Class属性来获得该类对象的Class对象。例如:

Class c = 类名.class;
第三种方式:

如果有一个类的实例对象已经得到,则调用该对象的getClass()方法返回该对象所属类对应的Class对象。getClass()方法是java.lang.Object类的方法之一,所以所有对象都可以调用该方法。

Class c=对象名.getClass();

垃圾回收:System.gc()或者Runtime.gc()方法是程序员与JVM的垃圾回收器进行通讯的唯一机制
当是执行gc()方法,并不能保证会立即回收垃圾,只能是促使回收器尽快回收。

文章目录

Sides

IT技术分享博客