国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java反射-類

FrancisSoung / 824人閱讀

摘要:使用反射可以在運行時檢視類。類名類修飾符等包信息超類所實現的接口構造函數方法屬性注解類中附加了很多信息,你可以在獲得一個完整列表。全限定名包含所有的包名。構造函數你可以訪問類的構造函數,代碼如下構造函數的詳細教程在章節。

使用反射可以在運行時檢視Java類。檢視類通常是使用反射時所做的第一件事情。從類中可以獲得下面的信息。

類名

類修飾符(private、public、synchronized等)

包信息

超類

所實現的接口

構造函數

方法

屬性

注解

Java類中附加了很多信息,你可以在JavaDoc for java.lang.Class獲得一個完整列表。本文將簡要接觸訪問所有上述提到的信息。一些主題會在分章節中進行更詳細的檢查。例如,本文會展示如何獲得所有的方法或者一個具體的方法,但分章節會展示如何調用那個方法、如何在名稱相同的方法中匹配一個給定參數集合的方法、通過反射調用方法將拋出什么異常、如何發現一個get/set等。本文的主要目的是介紹Class對象和你通過它能獲得的信息。

Class對象

對類做任何檢視之前,必須先獲得所檢視類的java.lang.Class對象。包括所有原始類型(int、float、lang等)包括數組(arrays)等所有Java類型都擁有一個相關的Class對象。如果你知道類在編譯時的名稱,可以通過下面的代碼獲得它的Class對象:

Class myObjectClass = MyObject.class

如果你不知道類在編譯時的名稱,但知道類在運行時的名稱字符串,可以參考下面的代碼:

String className = ... //obtain class name as string at runtime
Class class = Class.forName(className);

當使用Class.forName()方法時,你必須提供類的全限定名。全限定名包含所有的包名。例如,如果MyObject位于包com.jenkov.myapp,那么它的全限定名是com.jenkov.myapp.MyObject
Class.forName() 方法在運行時classpath路徑下找不到類時,會拋出一個ClassNotFoundException異常。

類名

Class對象包含兩個版本的名稱。全限定名(包含包名)使用getName()方法,如下:

Class aClass = ... //obtain Class object. See prev. section
String className = aClass.getName();

如果你需要獲得不包含報名的類名稱,你可以使用 getSimpleName()方法獲得,如下:

Class  aClass          = ... //obtain Class object. See prev. section
String simpleClassName = aClass.getSimpleName();
修飾符

你可以通過Class對象訪問一個類的修飾符。類修飾符關鍵字為publicprivate 、static等。獲得類修飾符的代碼如下:

Class  aClass = ... //obtain Class object. See prev. section
int modifiers = aClass.getModifiers();

修飾符被包裝成int,每個修飾符都是一個標識位來標記設置或清除。你可以通過java.lang.reflect.Modifier類的下列方法檢查修飾符:

Modifier.isAbstract(int modifiers)
Modifier.isFinal(int modifiers)
Modifier.isInterface(int modifiers)
Modifier.isNative(int modifiers)
Modifier.isPrivate(int modifiers)
Modifier.isProtected(int modifiers)
Modifier.isPublic(int modifiers)
Modifier.isStatic(int modifiers)
Modifier.isStrict(int modifiers)
Modifier.isSynchronized(int modifiers)
Modifier.isTransient(int modifiers)
Modifier.isVolatile(int modifiers)
包信息

你可以通過下面的方法獲得包信息:

Class  aClass = ... //obtain Class object. See prev. section
Package package = aClass.getPackage();

你可以通過Package對象獲取包信息,比如包名。你也可以訪問位于classpath路徑下的jar下的Manifest文件中的包的明確定義的包信息。例如,你可以在Manifest文件中指定包的版本號。你可以在 java.lang.Package中訪問更詳細的Package對象的信息。

超類

Class對象中你可以訪問類的超類。代碼如下:

Class superclass = aClass.getSuperclass();

超類對象也是一個普通的Class對象,所以你可以對它進行反射操作。

實現的接口

我們可以獲得一個給定類的實現的接口的列表。代碼如下:

Class  aClass = ... //obtain Class object. See prev. section
Class[] interfaces = aClass.getInterfaces();

一個類可以實現多個接口,因此返回值是一個Class數組。在反射中,接口也以Class對象表示。
注意:只有類顯示實現的接口才返回。如果一個類的超類實現了一個接口,但是這個類沒有實現,超類實現的接口不會包含在返回的數組中。即使這個類實際實現了那個接口(超類直接實現的接口),因為它是超類實現的。
如果需要獲得一個類實現的完整接口列表,你必須遞歸這個類和它所有的超類。

構造函數

你可以訪問類的構造函數,代碼如下:

Constructor[] constructors = aClass.getConstructors();

構造函數的詳細教程在Constructors章節。

方法

你可以訪問類的方法,代碼如下:

Method[] method = aClass.getMethods();

方法的更詳盡教程在Methods章節。

屬性

你可以訪問類的屬性(成員變量),代碼如下:

Field[] method = aClass.getFields();

屬性的更詳盡教程在Fields章節。

注解

你可以訪問一個類的注解,代碼如下:

Annotation[] annotations = aClass.getAnnotations();

注解的更詳盡教程在Annotations章節。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77169.html

相關文章

  • Java筆記-反射機制(一)

    摘要:反射機制一結合官方通過編寫的反射教程,復習一下反射的知識。反射的概念反射是一種在運行時獲取以及修改應用行為的一種工具。因為反射需要動態的解析類的信息,相比于非反射使用的方式要慢。反射需要獲取一定的運行時權限,在特定的安全環境下不一定存在。 Java反射機制(一) 結合Oracle官方通過JDK8編寫的反射教程,復習一下反射的知識。結尾篇補一個小例子。 主要內容 這次博客的主要內容就是簡...

    AWang 評論0 收藏0
  • Java 反射教程

    摘要:反射非常強大和有用。另外,反射可以用在映射結果集的列名到對象的方法。本教程將深入介紹反射。本教程還將清除一些關于范型信息在運行時可用性的認知混淆。類對象使用反射時,起點通常是需要使用反射檢視的類的對象。 Java反射可以在運行時檢視類、接口、屬性和方法,而無需在編譯時知道類名、方法名等等。它也同樣使用反射支持實例化新的對象、調用方法和get/set屬性值。 Java反射非常強大和有用...

    klivitamJ 評論0 收藏0
  • Java反射機制詳解

    摘要:反射機制的應用實例在泛型為的中存放一個類型的對象。工廠模式可以參考現在我們利用反射機制實現工廠模式,可以在不修改工廠類的情況下添加任意多個子類。 學習交流群:669823128java 反射 定義 功能 示例概要:Java反射機制詳解| |目錄 1反射機制是什么 2反射機制能做什么 3反射機制的相關API 通過一個對象獲得完整的包名和類名 實例化Class類對象 獲取一個對象的父類與...

    paraller 評論0 收藏0
  • Java反射學習小記

    摘要:反射使用類對象提供的基本元數據,能從類對象中找出方法或字段的名稱,然后獲取表示方法或字段的對象。常見的反射手段有反射和反射。以之前的反射為例其中指定了方法的返回類型,其實不止如此。 Java反射機制主要提供了以下功能: 在運行時判斷任意一個對象所屬的類 在運行時構造任意一個類的對象 在運行時判斷任意一個類所具有的成員變量和方法 在運行時調用任意一個對象的方法 生成動態代理 很多框架...

    frank_fun 評論0 收藏0
  • Java反射詳細介紹

    摘要:通過反射獲取帶參無返回值成員方法并使用設置安全檢查,訪問私有構造函數必須創建實例這種不行,注意和方法需要傳遞參數測試復制這個功能獲取私有方法,同樣注意和的區別賦予訪問權限調用方法。 反射 目錄介紹 1.反射概述 1.1 反射概述 1.2 獲取class文件對象的三種方式 1.3 反射常用的方法介紹 1.4 反射的定義 1.5 反射的組成 1.6 反射的作用有哪些 2.反射的...

    ingood 評論0 收藏0
  • 樂字節Java反射之一:反射概念與獲取反射源頭class

    摘要:一反射機制概念程序運行時,允許改變程序結構或變量類型,這種語言稱為動態語言,如,是動態語言顯然,,不是動態語言,但是有著一個非常突出的動態相關機制。相關的為二獲取源頭重點打開權限所有類的對象其實都是的實例。 一、Java反射機制概念 程序運行時,允許改變程序結構或變量類型,這種語言稱為動態語言,如Python, Ruby是動態語言;顯然C++,Java,C#不是動態語言,但是JAVA有...

    caikeal 評論0 收藏0

發表評論

0條評論

FrancisSoung

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<