簡體   English   中英

關於異構容器的一般性問題?

[英]A generic question about heterogeneous container?

我正在學習有效的java,我發現了異構容器的問題。 當我將值設置為異構容器時,IDEA IDE會給出錯誤:

'putFavorite(java.lang.Class<capture<? extends java.lang.String>>, capture<? extends java.lang.String>)' in 'com.kai.java.Favorites' cannot be applied to '(java.lang.Class<capture<? extends java.lang.String>>, java.lang.String)'

我的代碼:

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;


public class App {
    public static void main(String[] args) {
        Favorites favorites = new Favorites();
        favorites.putFavorite(String.class, "12345");
        favorites.putFavorite(String.class, "5678");
        favorites.putFavorite("123".getClass(), "999999"); // error
    }
}


class Favorites {
    private Map<Class<?>, Object> favorites = new HashMap<>();

    public <T> void putFavorite(Class<T> type, T instance) {
        favorites.put(Objects.requireNonNull(type), instance);
    }

    public <T> T getFavorite(Class<T> type) {
        return type.cast(favorites.get(type));
    }
}

您必須將putFavorite的簽名putFavorite

public <T> void putFavorite(Class<? extends T> type, T instance)

注意使用? extends T ? extends T而不僅僅是T

暫無
暫無

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

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