Java之.class和.getClass()的區別

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章