最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中Class.getMethods()和Class.getDeclaredMethods()方法的區(qū)別

 更新時(shí)間:2018年09月12日 09:16:05   作者:freeTimeWY  
這篇文章主要介紹了java中Class.getMethods()和Class.getDeclaredMethods()方法的區(qū)別 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

在java中,可以根據(jù)Class類的對(duì)象,知道某個(gè)類(接口)的一些屬性(成員 ,方法,注釋,注解)等。由于最近的工作中用到了這些,其中需要在代碼中格局反射知道某些類的方法,查看文檔的時(shí)候,看到了getMethods()和getDeclaredMethods()的差異。雖然兩者都能實(shí)現(xiàn)目的,但個(gè)人覺得還是有必要區(qū)分下。

  JDK API(1.6)文檔中是這樣翻譯兩個(gè)方法的:

getMethods():

  返回一個(gè)包含某些 Method 對(duì)象的數(shù)組,這些對(duì)象反映此 Class 對(duì)象所表示的類或接口(包括那些由該類或接口聲明的以及從超類和超接口繼承的那些的類或接口)的公共 member 方法。數(shù)組類返回從 Object 類繼承的所有(公共)member 方法。返回?cái)?shù)組中的元素沒有排序,也沒有任何特定的順序。如果此 Class 對(duì)象表示沒有公共成員方法的類或接口,或者表示一個(gè)基本類型或 void,則此方法返回長(zhǎng)度為 0 的數(shù)組。類初始化方法 <clinit> 不包含在返回的數(shù)組中。如果類聲明了帶有相同參數(shù)類型的多個(gè)公共成員方法,則它們都會(huì)包含在返回的數(shù)組中。

getDeclaredMethods():

  返回 Method 對(duì)象的一個(gè)數(shù)組,這些對(duì)象反映此 Class 對(duì)象表示的類或接口聲明的所有方法,包括公共、保護(hù)、默認(rèn)(包)訪問(wèn)和私有方法,但不包括繼承的方法。返回?cái)?shù)組中的元素沒有排序,也沒有任何特定的順序。如果該類或接口不聲明任何方法,或者此 Class 對(duì)象表示一個(gè)基本類型、一個(gè)數(shù)組類或 void,則此方法返回一個(gè)長(zhǎng)度為 0 的數(shù)組。類初始化方法 <clinit> 不包含在返回?cái)?shù)組中。如果該類聲明帶有相同參數(shù)類型的多個(gè)公共成員方法,則它們都包含在返回的數(shù)組中。

  大致上來(lái)看,兩個(gè)方法的區(qū)別主要在于:getMethods()返回的是該類以及超類的公共方法。getDeclaredMethods()返回該類本身自己聲明的包括公共、保護(hù)、默認(rèn)(包)訪問(wèn)和私有方法,但并不包括超類中的方法。比如如下列子:

public class TestObject
{
  private void method1()
  {
  }
  public void method2()
  {
  }
  void method3()
  {
  }
  protected void method4()
  {
  }
}
public class TestClass
{
  public static void main(String[] args)
  {
    Method[] methods = TestObject.class.getMethods();
    System.out.println("getMethods():");
    for (Method method : methods)
    {
      System.out.println(method.getName());
    }
    Method[] methods2 = TestObject.class.getDeclaredMethods();
    System.out.println("===========================");
    System.out.println("getDeclaredMethods():");
    for (Method method : methods2)
    {
      System.out.println(method.getName());
    }
  }
}

運(yùn)行TestClass結(jié)果:

getMethods():
method2
wait
wait
wait
equals
toString
hashCode
getClass
notify
notifyAll
===========================
getDeclaredMethods():
method1
method2
method3
method4

  很明顯getMethods()就返回一個(gè)自己聲明的method2()方法,其余的方法全部是來(lái)自O(shè)bject類。getDeclaredMethods()返回了自生聲明的四個(gè)方法。兩個(gè)方法的主要區(qū)別就在這里吧。

另外,返回Method數(shù)組為0 的情況也是JDK按照文檔上介紹的一樣。比如”空”接口,基本類型:

public interface TestInterface
{
}
//兩種方法返回的都是空

以及基本類型:兩種方法返回的也都是空

Method[] methods = int.class.getMethods();
Method[] methods2 = int.class.getDeclaredMethods();

總結(jié):其實(shí)Class中有很多相似的方法比如:getAnnotations()getDeclaredAnnotations(),以及getFields()和getDeclaredFields()等等,不同之處和上面基本一樣

總結(jié)

以上所述是小編給大家介紹的java中Class.getMethods()和Class.getDeclaredMethods()方法的區(qū)別,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 詳解Java類動(dòng)態(tài)加載和熱替換

    詳解Java類動(dòng)態(tài)加載和熱替換

    本文主要介紹類加載器、自定義類加載器及類的加載和卸載等內(nèi)容,并舉例介紹了Java類的熱替換。
    2021-05-05
  • java的泛型你真的了解嗎

    java的泛型你真的了解嗎

    這篇文章主要為大家詳細(xì)介紹了java的泛型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • elasticsearch數(shù)據(jù)信息索引操作action?support示例分析

    elasticsearch數(shù)據(jù)信息索引操作action?support示例分析

    這篇文章主要為大家介紹了elasticsearch數(shù)據(jù)信息索引操作action?support示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • 詳解Java的Hibernate框架中的Interceptor和Collection

    詳解Java的Hibernate框架中的Interceptor和Collection

    這篇文章主要介紹了Java的Hibernate框架中的Interceptor和Collection,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2016-01-01
  • IntelliJ IDEA 編輯器的全局搜索中使用正則表達(dá)式的操作方法

    IntelliJ IDEA 編輯器的全局搜索中使用正則表達(dá)式的操作方法

    這篇文章主要介紹了IntelliJ IDEA 編輯器的全局搜索中使用正則表達(dá)式的相關(guān)知識(shí),補(bǔ)充介紹了IDEA查找和替換實(shí)用正則,感興趣的朋友跟隨小編一起看看吧
    2024-01-01
  • list集合去除重復(fù)對(duì)象的實(shí)現(xiàn)

    list集合去除重復(fù)對(duì)象的實(shí)現(xiàn)

    下面小編就為大家?guī)?lái)一篇list集合去除重復(fù)對(duì)象的實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • @RequestBody的使用案例代碼

    @RequestBody的使用案例代碼

    @RequestBody主要用來(lái)接收前端傳遞給后端的json字符串中的數(shù)據(jù)的,這篇文章主要介紹了@RequestBody的使用,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • 詳解SpringBoot 發(fā)布ApplicationEventPublisher和監(jiān)聽ApplicationEvent事件

    詳解SpringBoot 發(fā)布ApplicationEventPublisher和監(jiān)聽ApplicationEvent事

    這篇文章主要介紹了詳解SpringBoot 發(fā)布ApplicationEventPublisher和監(jiān)聽ApplicationEvent事件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Java中關(guān)于Collections集合工具類的詳細(xì)介紹

    Java中關(guān)于Collections集合工具類的詳細(xì)介紹

    Java提供了一個(gè)操作Set、List和Map等集合的工具類:Collections,該工具提供了大量方法對(duì)集合元素進(jìn)行排序、查詢和修改等操作,還提供了將集合對(duì)象設(shè)置為不可變、對(duì)集合對(duì)象實(shí)現(xiàn)同步控制等方法
    2021-09-09
  • Java系統(tǒng)的高并發(fā)解決方法詳解

    Java系統(tǒng)的高并發(fā)解決方法詳解

    這篇文章主要介紹了Java系統(tǒng)的高并發(fā)解決方法,內(nèi)容十分豐富,在這里分享給大家,需要的朋友可以參考。
    2017-09-09

最新評(píng)論

明溪县| 隆德县| 和平区| 昌乐县| 偏关县| 通辽市| 江达县| 太仆寺旗| 曲麻莱县| 特克斯县| 靖边县| 常德市| 阜阳市| 镇江市| 玉溪市| 黄石市| 中卫市| 山西省| 安义县| 乌拉特中旗| 南江县| 乌拉特中旗| 咸阳市| 新疆| 紫阳县| 饶阳县| 蛟河市| 陈巴尔虎旗| 广东省| 梁山县| 炎陵县| 隆安县| 新乡县| 忻州市| 金山区| 鹤岗市| 虎林市| 瑞金市| 湖南省| 全州县| 焉耆|