1. 程式人生 > >Java中的getClass()方法

Java中的getClass()方法

Java中的getClass()方法

2018年03月09日 10:40:16 LittleLawson 閱讀數:862

版權宣告:如若轉載,請聯絡作者。 https://blog.csdn.net/liu16659/article/details/79494201

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());//獲取權威的類名
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

輸出結果如下:

Test
Test.Person
  • 1
  • 2
  • 當使用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)
    }
}