Java中的getClass()
方法
- 当使用getClass()方法的对象是普通类对象时,getclass()方法返回当前对象的类的信息。代码如下
public class Test
{
public static void main(String args[]){
Test t = new Test();
System.out.println(t.getClass().getName()=="Test");
System.out.println(t.getClass().getCanonicalName());//获取权威的类名
}
}
getName()方法,返回类名。
getCanonicalName()返回权威的类名。比如说,如果该类是一个匿名类,则返回输出null;如果该类是根据java语法创建出的类,则返回输出类名。
- 当使用getClass()方法的对象是内部类的对象时:
public class Test
{
public void Test(){
System.out.println("This is constructor of test!");
}
public static void main(String args[]){
Test t = new Test();
Person p = t.new Person();//新建一个内部类对象
System.out.println(t.getClass().getCanonicalName());//获取权威的类名
System.out.println(p.getClass().getCanonicalName());
}
//内部类
class Person {
public void play(String sportName) {
System.out.println("I'am LittleLawson,I like play" + sportName);
}
}
}
输出结果如下:
Test
Test.Person
- 当使用getClass()方法的对象是匿名内部类的对象时
abstract class People{
public void eat(String food){}
}
public class Test
{
public static void main(String args[]){
//匿名内部类
People peo = new People(){
@Override
public void eat(String food) {
System.out.println("I'm eating "+ food);
}
};
peo.eat("beat");
peo.getClass();//不输出任何类名
peo.getClass().getCanonicalName();//不输出任何信息(为null)
}
}