黑马程序员技术交流社区

标题: Class类中的isPrimitive()方法 [打印本页]

作者: 高鑫    时间: 2012-7-18 03:54
标题: Class类中的isPrimitive()方法
isPrimitive
public boolean isPrimitive()判定指定的 Class 对象是否表示一个基本类型。
有九种预定义的 Class 对象,表示八个基本类型和 void。这些类对象由 Java 虚拟机创建,与其表示的基本类型同名,即 boolean、byte、char、short、int、long、float 和 double。

这些对象仅能通过下列声明为 public static final 的变量访问,也是使此方法返回 true 的仅有的几个 Class 对象。
Boolean.TYPE, Character.TYPE, Byte.TYPE, Short.TYPE, Integer.TYPE, Long.TYPE, Float.TYPE, Double.TYPE, Void.TYPE

---------------------------------------------------------------------------------------
以上是查阅API文档的内容,请问“这些对象仅能通过下列声明为 public static final 的变量访问”这句话是什么意思,能不能举个不能访问的例子给我

作者: 高欢欢    时间: 2012-7-18 06:37
Class<?> getComponentType()方法是Class中的方法,可以返回表示数组类型的Class。
boolean isPrimitive()用来判断指定的Class类是否为一个基本类型。
例:
String [] arr = new String[10];
String str = "";
System.out.println(arr.getClass()); // 数组的String 类
System.out.println(str.getClass()); // 非数组的String 类
System.out.println(arr.getClass().getComponentType()); // String类
System.out.println(str.getClass().getComponentType()); // 得到null值,因为str不是数组
System.out.println(arr.getClass().getComponentType().isPrimitive()); // 显示false,因为String 不是基本数据类型
如果程序改成:
int [] arr = new int[10];
System.out.println(arr.getClass().getComponentType().isPrimitive()); // 显示true,因为int是基本数据类型
作者: 张晨    时间: 2012-7-18 07:48
也就是说,九个基本类型的class同名对象只能通过声明为public static final XXX()这样的方法访问,这个文档由java自动生成的,实际上这是方法的注释,下面是方法的内容,所以他加了“下列”,但实际上文档结束了,有点搞。
作者: 高鑫    时间: 2012-7-18 16:27
“这些对象仅能通过下列声明为 public static final 的变量访问”这句话
我字面理解是 int.class 只能让Integer.TYPE访问,请问对不对?如果对的话为什么可以System.out.println(int.class)直接打印int.class呢,这也算是直接访问啊??




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2