关于通过类名访问class属性,其实任何一个类,都会有一个Class对象于这个类对应,在这个Class对象中,保存着实例化该类时所需要的基本信息,A.class 其实返回的是一个类A的Class对象,贴一个小代码演示一下:
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 得到类名(不包含包名)
System.out.println(String.class.getSimpleName());// String
// 得到类的全名称(包含所在的包名)
System.out.println(String.class.getName());// java.lang.String
System.out.println(Test.class.getName());// Test
}
}
获取Calss对象的方式
主要有三种:
第一种:通过Class.forName(“类的全名称”)获取,用这个方法,最常见的应该是应用于JDBC注册驱动的时候用到的
try {
Class.forName("oracle.jdbc.driver.OracleDriver");// 注册驱动
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
第二种:通过已经实例化的对象获取,getClass()方法获取
第三种:通过类名.class获取
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Test test = new Test();
System.out.println(test.getClass());// class Test
System.out.println(Test.class);// class Test
}
}