Class类

           第一次看到还有一个Class类,呵呵!好像只有某个类的Class对象被载入内存,才能创建这个类的所有对象,看起来挺重要的,利用Class 还有此类的所有接口和父类,应该是用来查找此类的所有类型信息的吧。

   package com.zhoutenghn;
interface HasBatteries{}
interface Waterproof{}
interface Shoots{}
class Toy {
 Toy(){}
 Toy(int i ) {}
}
class FancyToy extends Toy implements HasBatteries,Waterproof,Shoots{
 FancyToy(){}
}
public class ToyTest {
 static void printInfo(Class<?> cc){
  System.out.println("Class name:"+cc.getName()+
    "  is interface?  ["+cc.isInterface()+"]");
  System.out.println("Simple name:"+cc.getSimpleName());
  System.out.println("Canonical name:"+cc.getCanonicalName());
 }

 /**
  * @param args
  * @throws IllegalAccessException
  * @throws 
  */
 public static void main(String[] args)   {
  // TODO Auto-generated method stub
    Class<?> c = null;
   
    try {
     c = Class.forName("com.zhoutenghn.FancyToy");//创建一个指向FancyToy类的Class引用,
             //同时也创建了类FancyToy
  
    }catch(ClassNotFoundException e){
     System.out.println("Can't find FancyToy");
     System.exit(1);
    }
     printInfo(c);
     for (Class<?> face : c.getInterfaces())//得到此类的接口类型
      printInfo(face);
     //printInfo(c);
     Class<?> up = c.getSuperclass();//得到此类的父类类型
     Object obj = null;
     try {
      obj = up.newInstance();
      //创建一个Toy类,并返回一个指向Toy类的引用
     }catch (InstantiationException  e){
      System.out.println("Cannot instantiate");
      System.exit(1);
     }catch (IllegalAccessException e ){
      System.out.println("Cannot access");
      System.exit(1);
     }
     printInfo(obj.getClass());//obj.getClass()得到obj的class对象
     printInfo(c);
 }

}

还有一个就是Class.forName(FancyToy)跟FancyToy.class的区别:后一个中的FancyToy类并没有被初始化

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值