Class对象是一个特殊的对象,是用来创建其它对象(这里的其他对象就是指:java类的实例(instance对象))。
其实Class对象就是java类编译后生成的.class文件,它包含了与类有关的信息。
其实Class对象就是java类编译后生成的.class文件,它包含了与类有关的信息。
每当第一次使用一个类时(第一次new该类实例),JVM必须使用“类加载器”子系统加载该类的Class对象。
一旦这个类的Class对象被载入内存,它就被用来创建这个类的所有对象。
但是当我们想自己加载这个类的Class对象怎么办呢?实际上有3种方法:
1.Class.forName("类名字符串") (注意:类名字符串必须是全称,包名+类名)
2.类字面常量法:类名.class
3.实例对象.getClass()
一旦这个类的Class对象被载入内存,它就被用来创建这个类的所有对象。
但是当我们想自己加载这个类的Class对象怎么办呢?实际上有3种方法:
1.Class.forName("类名字符串") (注意:类名字符串必须是全称,包名+类名)
2.类字面常量法:类名.class
3.实例对象.getClass()
Class类的实例就是Class对象!!!!!表示Java应用运行时的类或接口,可以用它来获取该类的相关信息,如:
getName() 返回类的名字
getPackage() 返回类所在的包
getFields() 返回所有的public数据成员
getMethods() 返回所有的public方法
....
getName() 返回类的名字
getPackage() 返回类所在的包
getFields() 返回所有的public数据成员
getMethods() 返回所有的public方法
....
我编的程序:
package Good;
public class AA
{
public static void main(String[] args)throws ClassNotFoundException
{
System.out.println(Class.forName("Good.BB").getName());
BB b=new BB();
System.out.println(BB.class.getPackage());
System.out.println(b.getClass().getFields());
}
}
{
public static void main(String[] args)throws ClassNotFoundException
{
System.out.println(Class.forName("Good.BB").getName());
BB b=new BB();
System.out.println(BB.class.getPackage());
System.out.println(b.getClass().getFields());
}
}
class BB
{
int i;
}