第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用泛型和接口,返回類(lèi)型是 Object,而不是 Type

使用泛型和接口,返回類(lèi)型是 Object,而不是 Type

開(kāi)心每一天1111 2023-10-13 10:00:15
我有一個(gè) UseCase 界面,簡(jiǎn)化為以下內(nèi)容   public interface UseCase<T> {        T execute(Request request);   }一個(gè)實(shí)現(xiàn)的例子是。public class DefaultCreateUser implements UseCase<User> {    private Request request = new CreateUserRequest();    @Override    public User execute(Request request) {        // create newUser based on request here        return newUser;    }}但是,我的執(zhí)行返回類(lèi)型不是 User 類(lèi)型,而是 Object 類(lèi)型。我想更好地了解如何在這里正確使用泛型,這是預(yù)期的輸出嗎?我知道我可以將對(duì)象轉(zhuǎn)換為用戶,但如果不需要,我想避免這種情況。
查看完整描述

1 回答

?
四季花海

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊

在運(yùn)行時(shí),由于泛型類(lèi)型擦除,只有對(duì)象。因此,人們可能需要一門(mén)課程。

public abstract class AbstractUseCase<T> implements UseCase<T> {


    protected final Class<T> type;


    protected AbstractUseCase(Class<T> type) {

        this.type = type;

    }


    @Override

    public User execute(Request request) {

        // create newUser based on request here

        return newUser;

    }

}


public class DefaultCreateUser extends AbstractUseCase<User> {


    public DefaultCreateUser() {

        super(User.class);

    }


    private Request request = new CreateUserRequest();


    @Override

    public User execute(Request request) {

        return new User();


        // Alternative in the base class:

        T newUser = type.getConstructor().newInstance();

        return newUser;


        // Alternative in the base class:

        Object newUser = ...;

        return type.cast(newUser);

    }

}


查看完整回答
反對(duì) 回復(fù) 2023-10-13
  • 1 回答
  • 0 關(guān)注
  • 110 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)