區別
類名.class叫做“類字面量”,因class是關鍵字, 所以類名.class編譯時確定。
getclass()運行時根據實際實例確定,getClass()是動態而且是final的。
String.class 是能對類名的引用取得在內存中該類型class對象的引用,
new String().getClass() 是通過實例對象取得在內存中該實際類型class對象的引用。
例子
1.抽象類
package com.abc;
public abstract class Animal {
}
2.實例類
package com.abc;
public class Dog extends Animal {
public static void main(String[] args) {
Animal animal = new Dog();
System.out.println(animal.getClass().getName());
System.out.println(Animal.class.getName());
}
}
3.結果
com.abc.Dog
com.abc.Animal