绝想首页

java中的Class类,看了之后绝对让你豁然开朗!

xinxinso [深情] 2011-06-29 11:33:05 星期三 晴天 查看:38053 回复:2 发消息给作者

在java中,每个类都有一个相应的class对象,也就是说当我们编写一个类编完后, 在生成的.class文件中就会产生一个Class对象,用于表示这个类的信息。
获取Class实例的三种方式:
1;利用对象的getClass()方法获取该对象的Class实例;
2;使用Class类的静态方法forName()方法来获取对象的实例;
3;运用.class方法来获取Class实例,对于基本的数据类型的封装类,我们还可以用.TYPE来获得相应的基本数据类型的Class实例。
  下面是一个相关的例子其中Class类的forName()方法要抛出一个ClassNotFoundException的异常,所以我们用try catch来捕获,还可以把它声明为抛出异常
class Test
{
 public static void main(String args[])
 {
      Point pt=new Point();
      Class c1=pt.getClass();
      System.out.println("c1_name"+c1.getName());
     
      try
      {
        Class c2=Class.forName("Point");
        System.out.println("c2_name="+c2.getName());
      }
      catch(Exception e)
      {
       e.printStackTrace();
      }
     
      Class c3=Point.class;
      System.out.println("c3_name="+c3.getName());
     
      Class c4=int.class;
      System.out.println("c4_name="+c4.getName());
     
      Class c5=Integer.TYPE;
      System.out.println("c5_name="+c5.getName());
     
      Class c6=Integer.class;
      System.out.println("c6_name="+c6.getName());
      //------------------------------------------
         System.out.println("before new point");
      Point pt=new Point();
      System.out.println("after new point");
      try
      {
         Class.forName("Line"); 
      }
      catch(ClassNotFoundException e)
      {
       e.printStackTrace();
      }
    
      System.out.println("after call Class of Line");
            //------------------------------------------ 

         // ---------------------------------------------------------  
         if(args.length!=1)
      {
       return;
      }
      try
      {
       Class c=Class.forName(args[0]);
       Point pp=(Point)c.newInstance();
         pp.output();
      }
      catch(Exception e)
      {
       e.printStackTrace();
      }
      //---------------------------------------------------------

 }
}
class Point
{
 int x;
 int y;
    static
 {
  System.out.println("loading Point");
 }

  void output()

  {

      System.out.println("x="+x+",y="+"y);

  }
}
class Line
{
    static
    {
      System.out.println("loading Point"); 
    }
}

顶一下(201 写日记 811247 2702

 

 

留住已经逝去的峥嵘岁月 记住曾经绽现的万种风情 在记忆即将淡漠的时候 来把这些重新回味

Copyright (C) 2008-2014 www.juexiang.com, All Rights Reserved.

京ICP备2023001011号-3   京公网安备11010802011908号

客服QQ 1017160561 违法和不良信息举报电话 13148464312 邮箱 1017160561@qq.com