java类型信息
来源:互联网 发布:js验证支付宝账号 编辑:程序博客网 时间:2024/09/21 09:23
Java类型信息全称为RTTI(Run Time Type Information)
要解释清楚,首先要了解Java中Class对象的存在和它的机制。Class对象是一个特殊的对象,因为它的名字容易与class关键字混淆,所以要注意区别,两者并不是一个概念。
Class对象中包含了创建类的相关信息,java用它来创建类的所有对象。每当编写一个新类时就会产生一个对应的Class对象(注意Class对象与编写的类对应)。对于Class对象还有许多应用,在以下代码中慢慢介绍:
上代码:
class Candy { static { System.out.println("Loading Candy"); }}class Gum { static { System.out.println("Loading Gum"); }}class Cookie { static { System.out.println("Loading Cookie"); }}public class SweetShop { public static void main(String[] args) throws InstantiationException, IllegalAccessException { System.out.println("inside main"); new Candy(); System.out.println("After creating Candy"); try { Class.forName("Gum");//!!!!!!!!!!! } catch(ClassNotFoundException e) { System.out.println("Couldn't find Gum"); } System.out.println("After Class.forName(\"Gum\")"); new Cookie(); System.out.println("After creating Cookie"); }}
可见代码里有一句
Class.forName(String str)作用:该方法返回与str相匹配的类
Class.forName(String str).newInstance()作用:获得类的实例,不过类型是Object.
如果要通过Class获得类的实例,完整的语句是:(str)Class.forName(String str).newInstance(); 注:当使用newInstance获得对象时要注意,该类必须具有默认的构造函数或者显示的无参数构造函数。
开始说了Class还有很多其他功能:getName() isInterface() getSimpleName() getCanonicalName() getInterfaces() getSuperclass() 。YY都能知道什么作用,我就不一一解释了。其中个体Interfaces()返回的是接口数组。
使用类字面常量也能获得Class对象引用,语法如:A.class。
注意:在调用forName()或使用类字面常量时都会执行对应类中的静态块与静态成员。(这就解释了类初始化顺序。------->当实例化一个类时首先初始化静态成员与块,然后是普通成员,然后是构造函数)
1、可以用泛型来限定Class对象的类型。语法:①Class<Integer> a=Integer.class;②Class<? extends Number> a=Integer.class③Class<? super Integer> a=Number.class;
注意:Class<Number> genericNumberClass=Integer.class;该语句是无法通过编译的,因为虽然Integer是Number的子类,但Integer Class并不是Number Class的子类。
- java类型信息
- Java 类型信息
- java基础-类型信息
- Java中的类型信息
- Java类型信息:RTTI
- java 类型信息
- java 类型信息 笔记
- Java类型信息
- Java 类型信息知识点
- Thinking in Java :类型信息
- java反射---获取类型信息
- java基础之类型信息
- thingking in Java 类型信息
- Thinking in Java -- 类型信息
- 理解Java的类型信息
- java学习笔记-----类型信息
- Java泛型中类型信息的擦除
- 《Java 编程思想》--第十四章:类型信息
- Hadoop 常见问题总结
- Oracl grant 角色
- 关于XSS(二)
- android查询通话记录小结
- SASS用法指南
- java类型信息
- STL迭代器失效
- PHP会话(Session)使用入门
- 解法二
- Linux设备驱动开发环境的搭建(转)
- 【图形】直方图绘制分析
- org.hibernate.service.jta.platform.spi.JtaPlatform
- QT QTableWidget 用法总结
- 求1000以内所有偶数的和 1