比如说:
public class Test
{
public static void main(String[] args)
{
System.out.println("本类的类名是:" + ????);
}
}要怎么写才能打印出:
“本类的类名是:Test”
呢?
public class Test
{
public static void main(String[] args)
{
System.out.println("本类的类名是:" + ????);
}
}要怎么写才能打印出:
“本类的类名是:Test”
呢?
System.out.println(test.getClass().getName());
System.out.println(test.getClass().getName());
跟直接写"Test"区别不是很大吧?
不过也可以这样:
System.out.println(new Test().getClass().getName());
或者写一个方法identifyObject(Object o) {
if (o.getClass.getName() == "Test1") { ... }
if (o.getClass.getName() == "Test2") { ... }
}
ps:你写的函数没看出有什么用,而且也不该用“==”
{
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的名字这又有什么意义,
Test.class就可以了,有必要new一个对象吗? new Test().getClass() == Test.class
你试试这个:
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() );
}
}从理论上说一个静态方法当然能构确定他属于哪个类,不过我不知道有没有这样的调用方式。
用处当然有,比如记日志,不就要用到类名吗?
因为你在写静态方法时已经知道在哪个类,直接用字面量就可以了 MyClass.class!
不过总觉得有点怪怪的,一个类名要出现两次。让人感觉不舒服。我也查过Tomcat的源码他也是采用这种方法。但总是有点觉得好像不符合编程规则的感觉。
public static void main(String[] args){Classname test= new Classname();
System.out.println(test.getClass().getName());
}
}编译执行得到类名
Classname
public static void main(String[] args){System.out.println(Classname.class);
}
}