class屬性
當你要獲得一個類的Class對象時(作函數參數的時候),你不能調用getClass方法,那你只能用類名.class來達到效果
例子:
System.out.println(JButton.class);
輸出:
class javax.swing.JButton
getClass方法:該方法只能由類的實例變量調用
類型:public final Class<? extends Object> getClass()
功能:返回該對象的運行時類的java.lang.Class對象(API上的解釋)
例子:
JButton b1 = new JButton(“button1”);
System.out.println(b1.getClass());
輸出:
class javax.swing.JButton
區別
類名.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