成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

java代碼反射實例下載 通俗理解java反射舉例子

JAVA中反射是什么

JAVA中反射是動態(tài)獲取信息以及動態(tài)調(diào)用對象方法的一種反射機制。

成都創(chuàng)新互聯(lián)公司主營桂東網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App制作,桂東h5小程序定制開發(fā)搭建,桂東網(wǎng)站營銷推廣歡迎桂東等地區(qū)企業(yè)咨詢

Java反射就是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意方法和屬性;并且能改變它的屬性。而這也是Java被視為動態(tài)語言的一個關(guān)鍵性質(zhì)。

Java反射的功能是在運行時判斷任意一個對象所屬的類,在運行時構(gòu)造任意一個類的對象,在運行時判斷任意一個類所具有的成員變量和方法,在運行時調(diào)用任意一個對象的方法,生成動態(tài)代理。

擴展資料:

JAVA中反射實例:

1、Class superClass=clazz.getSuperclass();//獲取父類。

System.out.println("getSuperclass:"+superClass)。? ?

2、Class[] interfaces=clazz.getInterfaces();//獲取實現(xiàn)接口。

System.out.println("getInterfaces:"+interfaces.length)。

3、Constructor[] cons=clazz.getConstructors();//構(gòu)造方法。

System.out.println("getConstructors:"+cons.length)。

參考資料來源:百度百科: JAVA反射機制

java反射機制實例

import java.lang.reflect.Method;

public class InvokeTester

{

public int add(int param1, int param2)

{

return param1 + param2;

}

public String echo(String message)

{

return "hello: " + message;

}

public static void main(String[] args) throws Exception

{

Class? classType = InvokeTester.class;

Object invokeTester = classType.newInstance();

// System.out.println(invokeTester instanceof InvokeTester); //返回true

Method addMethod = classType.getMethod("add", new Class[] { int.class,int.class }); //第二個形參表示指定的add方法要接收為int的類型的兩個參數(shù)

Object result = addMethod.invoke(invokeTester, new Object[]{1, 2}); //反射調(diào)用,將1,2傳入InvokeTester.Class的實例invokeTester里的add方法。得返回的結(jié)果。

System.out.println((Integer)result);

System.out.println("---------------------");

Method echoMethod = classType.getMethod("echo", new Class[]{String.class});

Object result2 = echoMethod.invoke(invokeTester, new Object[]{"tom"});

System.out.println((String)result2);

}

}

Java如何實現(xiàn)反射靜態(tài)加載和動態(tài)加載實例代碼詳解

1.Java動態(tài)加載類和靜態(tài)加載類的區(qū)別

new創(chuàng)建對象的方式稱作為靜態(tài)加載,而使用Class.forName("XXX")稱作為動態(tài)加載,它們倆本質(zhì)的區(qū)別在于靜態(tài)加載的類的源程序在編譯時期加載(必須存在),而動態(tài)加載的類在編譯時期可以缺席(源程序不必存在)。

2.為什么需要動態(tài)加載類

對于我自己的理解,動態(tài)加載類增加了程序的靈活性。比如一個程序中有50個功能,但你可能只會使用其中的一個,如果你用的是靜態(tài)加載的方式,你必須在編譯前提供100個功能的所有定義,否則無法編譯通過,若你使用的是動態(tài)加載機制,則不需要如此大費周章,用哪一個就定義哪一個即可。

靜態(tài)加載:

public class Office_Static {

public static void main(String[] args) {

//new 創(chuàng)建對象,是靜態(tài)加載類,在編譯時刻就需要加載所有的可能使用到的類

if("Word".equals(args[0])){

Word w = new Word();

w.start();

}

if("Excel".equals(args[0])){

Excel e = new Excel();

e.start();

}

}

}

這個程序編譯時必須有Word和Excel這兩個類存在才行,即使判斷后用不到Excel也要加載

動態(tài)加載:

接口OfficeAble :

public interface OfficeAble {

public void start();}

用java實現(xiàn)類和對象的反射,代碼最好有注釋,謝謝

給你一個小的實例代碼:

import java.lang.reflect.Method;

import java.lang.reflect.InvocationTargetException;

public class test {

public static void main(String args[]) throws NoSuchMethodException,

IllegalAccessException, InvocationTargetException {

Foo foo = new Foo("這個一個Foo對象!");

Class clazz = foo.getClass();

Method m1 = clazz.getDeclaredMethod("outInfo");

Method m2 = clazz.getDeclaredMethod("setMsg", String.class);

Method m3 = clazz.getDeclaredMethod("getMsg");

m1.invoke(foo);

m2.invoke(foo, "重新設(shè)置msg信息!");

String msg = (String) m3.invoke(foo);

System.out.println(msg);

}

}

class Foo {

private String msg;

public Foo(String msg) {

this.msg = msg;

}

public void setMsg(String msg) {

this.msg = msg;

}

public String getMsg() {

return msg;

}

public void outInfo() {

System.out.println("這是測試Java反射的測試類");

}

}

網(wǎng)站標題:java代碼反射實例下載 通俗理解java反射舉例子
地址分享:http://jinyejixie.com/article22/hephjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站改版網(wǎng)站設(shè)計公司、網(wǎng)站導航、自適應網(wǎng)站、網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
梨树县| 灵石县| 江津市| 长治市| 苍南县| 宜黄县| 章丘市| 无锡市| 张家港市| 澄迈县| 基隆市| 元阳县| 沁阳市| 浮山县| 富宁县| 额尔古纳市| 安徽省| 同心县| 南城县| 曲靖市| 磐安县| 株洲县| 金塔县| 伊金霍洛旗| 雅江县| 文化| 柘城县| 屏东市| 阿图什市| 福安市| 应城市| 营山县| 侯马市| 富阳市| 呼和浩特市| 溆浦县| 无棣县| 平阳县| 塘沽区| 堆龙德庆县| 花莲市|