System.out.println(Byte.TYPE==byte.class); //true
IDE的自动感知提示Byte.TYPE的引用类型是Class<Byte>
而IDE的自动感知提示byte.class的类型是Class<byte>
难道多态了?????
------解决方案--------------------
应该是自动装箱。 Byte是包装类型 byte是基本类型 (Byte.TYPE==byte.class)这里在作比较的时候 肯定是将byte基本类型 装箱为Byte包装类型。因为只有基本类型本身是不能通过 == 进行比较的。
------解决方案--------------------
Byte.TYPE
表示基本类型 byte 的 Class 实例。
byte.class
而bype.class就是byte的class实例。
那么什么叫byte的class实例呢,class类的实例表示正在运行的 Java 应用程序中的类和接口
类的实例一些常用信息包括,
类或接口的所有可访问公共字段tyte.class.getFields()
类或接口(包括那些由该类或接口声明的以及从超类和超接口继承的那些的类或接口)的公共 member 方法tyte.class.getMethods()
以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。tyte.class.getName()
获取此类的包。tyte.class.getPackage()
------解决方案--------------------
Byte.Type -->byte
Byte.class -->class java.lang.Byte
- Java code
public static void main(String[] args) { // TODO Auto-generated method stub Class<Byte> o = Byte.TYPE; System.out.println("Byte.Type -->" + o) ; Class<Byte> b = Byte.class ; System.out.println("Byte.class -->" + b) ; }
------解决方案--------------------
(1)
Byte.class:代表的是Byte的字节码
Byte.TYPE:代表的是Byte这个类里面的一个成员变量,TYPE,可以查看源代码:
- Java code
/** * The <code>Class</code> instance representing the primitive type * <code>byte</code>. */ public static final Class<Byte> TYPE = (Class<Byte>) Class.getPrimitiveClass("byte");
------解决方案--------------------
无基础类型的泛型,即无Class<byte>,Class<int>.....这些类型
------解决方案--------------------
看源码即知:
- Java code
public static final Class<Byte> TYPE = (Class<Byte>) Class.getPrimitiveClass("byte");