比如说:
public class Test
{
    public static void main(String[] args)
    {
        System.out.println("本类的类名是:" + ????);
    }
}要怎么写才能打印出:
“本类的类名是:Test”
呢?

解决方案 »

  1.   

    Test test = new Test();
    System.out.println(test.getClass().getName());
      

  2.   

    Test test = new Test();
    System.out.println(test.getClass().getName());
      

  3.   

    写个new Test();
    跟直接写"Test"区别不是很大吧?
      

  4.   

    当然大了,
    不过也可以这样:
    System.out.println(new Test().getClass().getName());
      

  5.   

    new Test().getClass().getName()得到名字了,然后自己判断,不就可以自动识别了?
    或者写一个方法identifyObject(Object o) {
    if (o.getClass.getName() == "Test1") { ...   }
    if (o.getClass.getName() == "Test2") {  ...  }
     
    }
      

  6.   

    有什么区别?除了Eclipse在重构的时候能自动识别以外就没有多大区别了,一样不是有系统自动识别而是人工指定的。
    ps:你写的函数没看出有什么用,而且也不该用“==”
      

  7.   

    public class Test
    {
       static Test link=new Test();
        public static void main(String[] args)
        {    
            System.out.println("本类的类名是:"+link.getClass().getName() );
        }
    }
    jvm先进入main入口此时Test对象还没有生成。如果你不想在main方法中new对象那只能调用静态属性或者静态方法拉。如果你根本就不想生成Test的对象,那又如何访问Test类。而在jvm运行Test类时本身就用到拉java “Test”如果你只是单纯的想得到Test的名字这又有什么意义,
      

  8.   

    晕呀,哪里有这样写的呀,绕一个大圈呀 
    Test.class就可以了,有必要new一个对象吗?  new Test().getClass() == Test.class 
      

  9.   

    类没有形成?不对吧…………
    你试试这个:
    public class Test
    {
        static 
        {
            System.out.println("ok");
        }    static Test link=new Test();
        public static void main(String[] args)
        {    
            System.out.println("本类的类名是:"+link.getClass().getName() );
        }
    }从理论上说一个静态方法当然能构确定他属于哪个类,不过我不知道有没有这样的调用方式。
    用处当然有,比如记日志,不就要用到类名吗?
      

  10.   

    静态方法就是属于类的,所以你问的问题不成为问题。
    因为你在写静态方法时已经知道在哪个类,直接用字面量就可以了 MyClass.class!
      

  11.   

    当然如果你用反射或者动态调用的话,使用Method.getDeclaringClass()
      

  12.   

    to:treeroot(旗鲁特)
    不过总觉得有点怪怪的,一个类名要出现两次。让人感觉不舒服。我也查过Tomcat的源码他也是采用这种方法。但总是有点觉得好像不符合编程规则的感觉。
      

  13.   

    System.out.println(new Test().getClass().getName());
      

  14.   

    class Classname{
    public static void main(String[] args){Classname test= new Classname();
    System.out.println(test.getClass().getName());
    }
    }编译执行得到类名
    Classname
      

  15.   

    treeroot(旗鲁特)说的对啊:class Classname{
    public static void main(String[] args){System.out.println(Classname.class);
    }
    }
      

  16.   

    反射或者动态调用的话,使用Method.getDeclaringClass()