亚洲色蝴蝶中文娱乐网,在线亚洲欧美一区二区中文字幕,无人视频在线观看视频高清视频,99午夜国产精品一区二区,人人妻人人爽人人狠狠

.class和getClass()深度理解

時間:2020-01-29 16:23:05 類型:JAVA
字號:    

  java有兩個獲得類名的方法getClass()和class(),這兩個方法看似一樣,實則不然。這兩個方法涉及到了java中的反射。.class 用于類  而 getClass()用于對象。.class和getClass()使用java程序可以得到運行時的類,其實得到就是 Class一個泛型 的 Class對象 T就是你所調(diào)用對象的運行時的類 的類型。

  反射

  所謂反射,可以理解為在運行時期獲取對象類型信息的操作。傳統(tǒng)的編程方法要求程序員在編譯階段決定使用的類型,但是在反射的幫助下,編程人員可以動態(tài)獲取這些信息,從而編寫更加具有可移植性的代碼。嚴格地說,反射并非編程語言的特性,因為在任何一種語言都可以實現(xiàn)反射機制,但是如果編程語言本身支持反射,那么反射的實現(xiàn)就會方便很多。

  聯(lián)系

  一般情況下,getclass()方法和class()方法是等價的,都可以獲得一個類型名,例如下面:

class A{
    public void func(){
 
    }
}
 
public class Test {
 
    public static void main(String[] args) {
        A a = new A();
        System.out.println(a.getClass()+" "+A.class);
    }
 
}


  輸出的結(jié)果為:class A class A

  區(qū)別:

  兩者最直接的區(qū)別就是,getClass()是一個類的實例所具備的方法,而class()方法是一個類的方法。

  另外getClass()是在運行時才確定的,而class()方法是在編譯時就確定了。

  例如下面的程序:

class Father{
public void showName()
{
 System.out.println("Father...");
}
}
class Child extends Father{
public void showName()
{
 System.out.println("children");
}
}

  Father father = new Child();

  System.out.println(Father.class);  結(jié)果是 Father

  System.out.println(father.getClass()); 結(jié)果是Child

  Class主要用于反射機制。

————————————————
版權(quán)聲明:本文為CSDN博主「youngogo」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/youngogo/article/details/82080425


<