av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

面向?qū)ο缶幊?- java動(dòng)態(tài)加載和類型轉(zhuǎn)換問(wèn)題?

瀏覽:140日期:2023-12-28 11:02:56

問(wèn)題描述

我有 A1.java, A2.java, A3.java ... A10.java 等十個(gè)類(也許更多);

他們里面都有一個(gè)public static String getResponse()的方法,不過(guò)里面所做的事情和回復(fù)的字符串都不一樣;

我還有一個(gè)變量 String name = 'A1';,不確定變量里面的到底是哪一個(gè)類的名字,不過(guò)肯定是這是個(gè)類里面的一個(gè)。

我想當(dāng)我收到這個(gè)name變量之后動(dòng)態(tài)調(diào)用所對(duì)應(yīng)的類的getResponse方法,而且不想用if-else一個(gè)個(gè)判斷。

試了下下面的代碼,forName回復(fù)的是一個(gè)class對(duì)象,好像不能強(qiáng)制類型轉(zhuǎn)換。能轉(zhuǎn)換也不知道到底轉(zhuǎn)換成哪一個(gè)對(duì)象,我不想一個(gè)個(gè)if-else判斷。

String result = Class.forName(name).getResponse();我應(yīng)該怎么做呢? 有沒(méi)有好的建議?

問(wèn)題解答

回答1:

這個(gè)就是 Java 反射的運(yùn)用吧.首先你需要通過(guò) Class.forName 獲取一個(gè)類的 Class 對(duì)象, 然后通過(guò)這個(gè) Class 對(duì)象的 getMethod 方法獲取指定的方法對(duì)象(Method), 最后通過(guò)這個(gè) Method 對(duì)象來(lái)調(diào)用此方法.用源碼表示:

public class Test { public static String getResponse() {return 'This is Test.getResponse'; } public static void main(String[] args) throws Exception {String name = 'com.test.Test';String methodName = 'getResponse';Class<?> threadClazz = Class.forName(name);Method method = threadClazz.getDeclaredMethod(methodName);System.out.println(method.invoke(null)); }}回答2:

class.forName獲取的就是類對(duì)象。然后你可以通過(guò)這個(gè)類對(duì)象的getMethod方法獲取對(duì)應(yīng)的方法。然后invoke對(duì)應(yīng)的方法

回答3:

能否讓這10多個(gè)類都實(shí)現(xiàn)一個(gè)接口,比如

public interface A0 { public String getResponse();}

然后A1、A2...都implements A0,并實(shí)現(xiàn)getResponse(只是不能定義成static了)。

然后就能這么寫(xiě)了:

String result = ((A0) Class.forName(name).newInstance()).getResponse();回答4:

除了反射以外,用Spring也可以。根絕獲得的字符串去get一個(gè)bean,然后調(diào)用方法。

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 日韩国产一区二区三区 | 日韩av免费看 | 天天干天天想 | 精品一区av | 国产乱码精品一区二三赶尸艳谈 | 午夜激情在线 | 成人国产精品 | 国内精品伊人久久久久网站 | 中文字幕一区二区三区四区不卡 | 色综合一区二区 | 欧美成人一区二区三区 | 精品日本中文字幕 | 精品国产一区二区三区性色 | 狠狠艹| 亚洲黄色成人网 | 亚洲国产成人精品女人久久久 | 爱操影视| 国产亚洲欧美在线 | 中文字幕人成乱码在线观看 | 成人自拍av | 国产91视频一区二区 | 一区二区在线不卡 | 中文字幕国产一区 | av网站在线看 | 国产伦精品一区二区三区高清 | 亚洲国产成人精品女人久久久 | 欧美日韩中文字幕在线播放 | 人人澡人人射 | 91久久综合亚洲鲁鲁五月天 | 欧美一级欧美三级在线观看 | 一级无毛片 | 高清色| 国产精品久久久久久妇女 | 久久尤物免费一区二区三区 | 久久久久成人精品 | 国产一区二区三区高清 | 国产精品久久久久久妇女6080 | 午夜免费福利影院 | av黄色国产 | 精品久久电影 | 久久av.com |