簡體   English   中英

Java通配符返回類型的抽象方法

[英]Java wildcard return type for abstract method

用於通配符的Java文檔說,可以將它們用作返回類型,但這通常不是一個好主意。 如果將通配符用作抽象方法的返回類型,但實現此方法的類返回具體類型,這是否仍然正確? 如果沒有,那么處理這種情況的最佳方法是什么。 考慮下面的示例。 在這種情況下,可以在JSON REST響應之后對Entity進行建模,在第二種情況下,結果只是一個字符串列表。 最好使用List<Object>作為返回類型還是完全使用其他類型?

public abstract class AbstractClient {
    public abstract List<?> listEntities();
}

public class ConcreteClient {
    @Override
    public List<Entity> listEntities();
}

public class ConcreteClient2 {
    @Override
    public List<String> listEntities();
}

在這種情況下,最好正確使用泛型而不是使用通配符。 使用類型參數,並使用類型參數的適當參數擴展抽象類:

public abstract class AbstractClient<T> {
    public abstract List<T> listEntities();
}

public class ConcreteClient extends AbstractClient<Entity> {
    @Override
    public List<Entity> listEntities();
}

public class ConcreteClient2 extends AbstractClient<String> {
    @Override
    public List<String> listEntities();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM