zhengkai王:
私は、異種コンテナの質問を発見し、効果的なの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));
}
}
user11044402:
あなたはのsignatur変更する必要がありますputFavorite
にします
public <T> void putFavorite(Class<? extends T> type, T instance)
使用に注意してください? extends T
だけではなくのをT
。