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

資訊專欄INFORMATION COLUMN

Java的Reflect記錄

suxier / 1873人閱讀

摘要:日常記錄作者對于的內部類,我們注意的表達方法,其原因是內部類編譯后是文件。代碼如下同時,我們也可以通過的方法,來獲得指定類中的所有子類。在下面的代碼中,可以在輸出中獲得子類的,如,也驗證了上面的的寫法。代碼如下接著來看一下中的。

Java 日常 記錄 作者: LinkSystem Java 2017/04/27

對于Java的內部類,我們注意ClassName的表達方法:package.Classname$InnerClass
其原因是內部類編譯后是ClassName$InnerClass.class文件。

代碼如下

public class ReflectExplain {

    static class Node{
        public double i;
        public int    x;

        public Node() {
        }

        public Node(double i, int x) {
            this.i = i;
            this.x = x;
        }
    }

    public static void main(String args[]) throws Exception {
        String name = "com.link.core.reflect.ReflectExplain$Node";
        Class clazz = Class.forName(name);
        System.out.println(clazz);
    }
}

同時,我們也可以通過ClassgetDeclaredClasses方法,來獲得指定類中的所有子類。在下面的代碼中,可以在輸出中獲得子類的ClassName,如 com.link.core.reflect.ReflectExplain$Node, 也驗證了上面的ClassName的寫法。

代碼如下

public class ReflectExplain {

    static class Node{
        public double i;
        public int    x;

        public Node() {
        }

        public Node(double i, int x) {
            this.i = i;
            this.x = x;
        }
    }

    public static void main(String args[]) throws Exception {
        String name = "com.link.core.reflect.ReflectExplain";
        Class clazz = Class.forName(name);
        Class[] clazzes = clazz.getDeclaredClasses();
        for (Class object : clazzes){
            System.out.println(object);
        }
    }
}

接著來看一下java.lang.reflect中的Modifier。在Class中有getModifiers()這一方法,其返回值是int值,在Class類中是這樣描述的

Returns the Java language modifiers for this class or interface, encoded in an integer.
The modifiers consist of the Java Virtual Machine"s constants for {@code public}, {@code protected}, {@code private}, {@code final}, {@code static}, {@code abstract} and {@code interface}; they should be decoded using the methods of class {@code Modifier}.

大致的意思是每一個修飾符都有一個對應的int值,在可以在Modifier類中匹配,所以可以
Modifier類中的方法,可見其中有 is() 的方法和toString()的方法,以下是is()的代碼和toString()的代碼:

    public static final int PUBLIC = 0x00000001;
    
    public static boolean isPublic(int mod) {
        return (mod & PUBLIC) != 0;
    }
    public static String toString(int mod) {
        StringBuilder sb = new StringBuilder();
        int len;

        if ((mod & PUBLIC) != 0)        sb.append("public ");
        if ((mod & PROTECTED) != 0)     sb.append("protected ");
        if ((mod & PRIVATE) != 0)       sb.append("private ");

        /* Canonical order */
        if ((mod & ABSTRACT) != 0)      sb.append("abstract ");
        if ((mod & STATIC) != 0)        sb.append("static ");
        if ((mod & FINAL) != 0)         sb.append("final ");
        if ((mod & TRANSIENT) != 0)     sb.append("transient ");
        if ((mod & VOLATILE) != 0)      sb.append("volatile ");
        if ((mod & SYNCHRONIZED) != 0)  sb.append("synchronized ");
        if ((mod & NATIVE) != 0)        sb.append("native ");
        if ((mod & STRICT) != 0)        sb.append("strictfp ");
        if ((mod & INTERFACE) != 0)     sb.append("interface ");

        if ((len = sb.length()) > 0)    /* trim trailing space */
            return sb.toString().substring(0, len-1);
        return "";
    }

可見其原理都是一致的,通過與方式來判斷是否為零,來返回相應的值。那么我們可以Modified類來實現某些應用。

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

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

相關文章

  • Idea 搭建SSH 架構

    摘要:這幾天在學習中的架構開始搭建時候遇到很多問題經過幾天的探索記錄一下的搭建一使用創建新項目選擇相關相關相關選擇完成后二在項目目錄下創建和文件夾將相關的包導入項目三依賴包四調整項目依賴路徑選擇放包的文件夾點擊然后四配置五測試修改報錯運行項 這幾天在學習java web中的SSh架構,開始搭建時候遇到很多問題,經過幾天的探索,記錄一下SSH 的搭建 一.使用Idea創建新項目 1.選擇Sp...

    syoya 評論0 收藏0
  • 反射機制與原理筆記

    反射機制與原理筆記 聲明 文章均為本人技術筆記,轉載請注明出處https://segmentfault.com/u/yzwall 反射機制 反射:當程序無法獲知對象類型時,在運行期間動態獲取類的所有屬性和方法,這種動態獲取類信息和動態調用對象方法的功能稱為反射機制;反射機制實現:Class類與java.lang.reflect類庫一起實現機制,java.lang.reflect類庫包含Field...

    fobnn 評論0 收藏0
  • UnsupportedOperationException

    摘要:本周在寫單元測試的時候遇見了一個新的,在此記錄一下。通過查看的源碼果然是這樣沒有重寫的但為什么會調用方法呢 本周在寫單元測試的時候遇見了一個新的exception,在此記錄一下。 單元測試中有一段代碼是這樣的: logger.debug(設置班級的學生); klass.setStudentList(Collections.singletonList(student1)); ...

    LiangJ 評論0 收藏0
  • Java動態代理之InvocationHandler最簡單入門教程

    摘要:網上關于的動態代理,和這些概念有講解得非常高深的文章。現在咱們通過一個最簡單的例子認識什么是。創建一個簡單的類,實現這個接口。看看用如何優雅實現吧希望這個例子能讓大家對的動態代理之有了最基本的了解。 網上關于Java的動態代理,Proxy和InvocationHandler這些概念有講解得非常高深的文章。其實這些概念沒有那么復雜。現在咱們通過一個最簡單的例子認識什么是Invocatio...

    lingdududu 評論0 收藏0

發表評論

0條評論

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