摘要:日常記錄作者對(duì)于的內(nèi)部類,我們注意的表達(dá)方法,其原因是內(nèi)部類編譯后是文件。代碼如下同時(shí),我們也可以通過的方法,來獲得指定類中的所有子類。在下面的代碼中,可以在輸出中獲得子類的,如,也驗(yàn)證了上面的的寫法。代碼如下接著來看一下中的。
Java 日常 記錄 作者: LinkSystem Java 2017/04/27
對(duì)于Java的內(nèi)部類,我們注意ClassName的表達(dá)方法:package.Classname$InnerClass,
其原因是內(nèi)部類編譯后是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); } }
同時(shí),我們也可以通過Class的getDeclaredClasses方法,來獲得指定類中的所有子類。在下面的代碼中,可以在輸出中獲得子類的ClassName,如 com.link.core.reflect.ReflectExplain$Node, 也驗(yàn)證了上面的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}.
大致的意思是每一個(gè)修飾符都有一個(gè)對(duì)應(yīng)的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 ""; }
可見其原理都是一致的,通過與方式來判斷是否為零,來返回相應(yīng)的值。那么我們可以Modified類來實(shí)現(xiàn)某些應(yīng)用。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/69949.html
摘要:這幾天在學(xué)習(xí)中的架構(gòu)開始搭建時(shí)候遇到很多問題經(jīng)過幾天的探索記錄一下的搭建一使用創(chuàng)建新項(xiàng)目選擇相關(guān)相關(guān)相關(guān)選擇完成后二在項(xiàng)目目錄下創(chuàng)建和文件夾將相關(guān)的包導(dǎo)入項(xiàng)目三依賴包四調(diào)整項(xiàng)目依賴路徑選擇放包的文件夾點(diǎn)擊然后四配置五測(cè)試修改報(bào)錯(cuò)運(yùn)行項(xiàng) 這幾天在學(xué)習(xí)java web中的SSh架構(gòu),開始搭建時(shí)候遇到很多問題,經(jīng)過幾天的探索,記錄一下SSH 的搭建 一.使用Idea創(chuàng)建新項(xiàng)目 1.選擇Sp...
反射機(jī)制與原理筆記 聲明 文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處https://segmentfault.com/u/yzwall 反射機(jī)制 反射:當(dāng)程序無法獲知對(duì)象類型時(shí),在運(yùn)行期間動(dòng)態(tài)獲取類的所有屬性和方法,這種動(dòng)態(tài)獲取類信息和動(dòng)態(tài)調(diào)用對(duì)象方法的功能稱為反射機(jī)制;反射機(jī)制實(shí)現(xiàn):Class類與java.lang.reflect類庫一起實(shí)現(xiàn)機(jī)制,java.lang.reflect類庫包含F(xiàn)ield...
摘要:本周在寫單元測(cè)試的時(shí)候遇見了一個(gè)新的,在此記錄一下。通過查看的源碼果然是這樣沒有重寫的但為什么會(huì)調(diào)用方法呢 本周在寫單元測(cè)試的時(shí)候遇見了一個(gè)新的exception,在此記錄一下。 單元測(cè)試中有一段代碼是這樣的: logger.debug(設(shè)置班級(jí)的學(xué)生); klass.setStudentList(Collections.singletonList(student1)); ...
摘要:網(wǎng)上關(guān)于的動(dòng)態(tài)代理,和這些概念有講解得非常高深的文章?,F(xiàn)在咱們通過一個(gè)最簡單的例子認(rèn)識(shí)什么是。創(chuàng)建一個(gè)簡單的類,實(shí)現(xiàn)這個(gè)接口??纯从萌绾蝺?yōu)雅實(shí)現(xiàn)吧希望這個(gè)例子能讓大家對(duì)的動(dòng)態(tài)代理之有了最基本的了解。 網(wǎng)上關(guān)于Java的動(dòng)態(tài)代理,Proxy和InvocationHandler這些概念有講解得非常高深的文章。其實(shí)這些概念沒有那么復(fù)雜。現(xiàn)在咱們通過一個(gè)最簡單的例子認(rèn)識(shí)什么是Invocatio...
閱讀 2977·2021-11-08 13:20
閱讀 1041·2021-09-22 15:20
閱讀 671·2019-08-30 15:53
閱讀 1976·2019-08-30 15:43
閱讀 1291·2019-08-29 17:21
閱讀 546·2019-08-29 12:15
閱讀 2386·2019-08-28 17:51
閱讀 3154·2019-08-26 13:26