實際中經(jīng)常使用getInstance()方法返回一個對象,對于工廠模式,傳入對應的參數(shù)返回與之相對應的對象.但是,問題來了,返回的對象需要被強制轉(zhuǎn)換,很麻煩.
在做網(wǎng)站、網(wǎng)站制作中從網(wǎng)站色彩、結(jié)構(gòu)布局、欄目設置、關鍵詞群組等細微處著手,突出企業(yè)的產(chǎn)品/服務/品牌,幫助企業(yè)鎖定精準用戶,提高在線咨詢和轉(zhuǎn)化,使成都網(wǎng)站營銷成為有效果、有回報的無錫營銷推廣。創(chuàng)新互聯(lián)專業(yè)成都網(wǎng)站建設10余年了,客戶滿意度97.8%,歡迎成都創(chuàng)新互聯(lián)客戶聯(lián)系。
import java.lang.reflect.*;
public class test
{
public static void main(String[] args) {
test1 t1 = factory.getInstance("test1");
test2 t2 = factory.getInstance("test2");
}
}
class factory
{
public static Object getInstance(String className)
{
try
{
return Class.forName(className).getConstructor().newInstance();
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}
class test1
{
public test1()
{
}
}
class test2
{
public test2()
{
}
}編譯不通過,說類型不兼容.
因此加上強制類型轉(zhuǎn)換,編譯通過了.
test1 t1 = (test1)factory.getInstance("test1");
test2 t2 = (test2)factory.getInstance("test2");
例子只有兩個類,手動強制轉(zhuǎn)換還可以,但如果多個類咋辦啊?而且作者是那種非常懶的人,也不想手動去轉(zhuǎn)換,因此,用大招-----泛型!
使用Class<T> 泛型可以避免強制轉(zhuǎn)換從而更有效地偷懶 ,需要把返回類型改成<T> T,同時由于使用了T,必須修改傳進來的參數(shù).
public static <T> T getInstance(Class<T> t)
import java.lang.reflect.*;
public class test
{
public static void main(String[] args) {
test1 t1 = factory.getInstance(test1.class);
test2 t2 = factory.getInstance(test2.class);
}
}
class factory
{
public static <T> T getInstance(Class<T> t)
{
try
{
return t.getConstructor().newInstance();
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}
class test1
{
public test1()
{
}
}
class test2
{
public test2()
{
}
}
文章標題:java自定義的getInstance()返回泛型
URL網(wǎng)址:http://chinadenli.net/article46/goijeg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供自適應網(wǎng)站、網(wǎng)站建設、、網(wǎng)頁設計公司、網(wǎng)站營銷、云服務器
聲明:本網(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)