java类型类型信息_java类型信息

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 a=Integer.class;②Class extends Number> a=Integer.class③Class super Integer> a=Number.class;

注意:Class  genericNumberClass=Integer.class;该语句是无法通过编译的,因为虽然Integer是Number的子类,但Integer Class并不是Number Class的子类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值