Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带泛型的静态工厂方法_Java_Generics - Fatal编程技术网

Java 带泛型的静态工厂方法

Java 带泛型的静态工厂方法,java,generics,Java,Generics,我有一个类EnumConverter,因为您想在映射中存储不同的子类型,编译器无法知道您正在接收哪个实际的子类型。我认为你必须添加一个演员阵容: public static <T extends Enum<?>> EnumConverter<T> getInstance(Class<T> enumClass) { return (EnumConverter<T>) cache.get(enumClass); } public

我有一个类
EnumConverter,因为您想在映射中存储不同的子类型,编译器无法知道您正在接收哪个实际的子类型。我认为你必须添加一个演员阵容:

public static <T extends Enum<?>> EnumConverter<T> getInstance(Class<T> enumClass) {
    return (EnumConverter<T>) cache.get(enumClass);
}

public static谢谢,这很有效!但是我仍然得到一个警告:
类型安全:从EnumConverter取消强制转换答案确实是
@SuppressWarnings(“Unchecked”)
private static final Map<Class<?>, EnumConverter<? extends Enum<?>>>
public static <T extends Enum<?>> EnumConverter<T> getInstance(Class<T> enumClass) {
    return (EnumConverter<T>) cache.get(enumClass);
}