欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

java自定義的getInstance()返回泛型

1.背景

實際中經(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()
    {
    }
}

編譯不通過,說類型不兼容.
java自定義的getInstance()返回泛型

因此加上強制類型轉(zhuǎn)換,編譯通過了.

test1 t1 = (test1)factory.getInstance("test1");
test2 t2 = (test2)factory.getInstance("test2");

2.如何處理

例子只有兩個類,手動強制轉(zhuǎn)換還可以,但如果多個類咋辦啊?而且作者是那種非常懶的人,也不想手動去轉(zhuǎn)換,因此,用大招-----泛型!

3.使用泛型

使用Class<T> 泛型可以避免強制轉(zhuǎn)換從而更有效地偷懶 ,需要把返回類型改成<T> T,同時由于使用了T,必須修改傳進來的參數(shù).

public static <T> T getInstance(Class<T> t)

4.完整代碼

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)

外貿(mào)網(wǎng)站建設