gpt4 book ai didi

java - 关于异构容器的一般问题?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:30:48 25 4
gpt4 key购买 nike

我正在学习有效的 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 的签名更改为

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

请注意 的使用?扩展 T 而不仅仅是 T

关于java - 关于异构容器的一般问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56442613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com