Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.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 是否有方法创建类的实例<;T>;它在类中作为传递泛型的构造函数中的参数 类JsonSerializer{ 私人阶级类型; 公共JsonSerializer(类类型){ this.type=type; } } Serializer Serializer=新的JsonSerializer(Map.class)_Java - Fatal编程技术网

Java 是否有方法创建类的实例<;T>;它在类中作为传递泛型的构造函数中的参数 类JsonSerializer{ 私人阶级类型; 公共JsonSerializer(类类型){ this.type=type; } } Serializer Serializer=新的JsonSerializer(Map.class)

Java 是否有方法创建类的实例<;T>;它在类中作为传递泛型的构造函数中的参数 类JsonSerializer{ 私人阶级类型; 公共JsonSerializer(类类型){ this.type=type; } } Serializer Serializer=新的JsonSerializer(Map.class),java,Java,对于上面的代码,编译器抛出了一个错误,因此我稍后将强制转换为Map您不能对Class对象执行此操作,因为您无法获得类,只能获得类 但如果您使用例如供应商,则可以这样做: class JsonSerializer<T> { private Class<T> type; public JsonSerializer(Class<T> type){ this.type = type; } } Serializer<Map

对于上面的代码,编译器抛出了一个错误,因此我稍后将强制转换为
Map

您不能对
Class
对象执行此操作,因为您无法获得
类,只能获得

但如果您使用例如
供应商
,则可以这样做:

class JsonSerializer<T> {
    private Class<T> type;
    public JsonSerializer(Class<T> type){
         this.type = type;
    }
}
Serializer<Map<String, byte[]>> serializer = new JsonSerializer<Map<String, byte[]>>(Map<String, byte[]>.class)

类似的东西应该可以工作:
newjsonserializer((Class)(Class)Map.Class)
Hi,如果没有
类型
字段和
声明之外的孤立代码,上述代码将永远无法编译。请您提供一个完整且清晰的问题描述,好吗?您将在类内使用
类型
做什么?您需要对其调用什么方法,或者在何处传递它?实际上,您可以通过两个强制转换来实现这一点,首先是向上强制转换,然后是向下强制转换。看看我对这个问题的答案question@user3528269用类型安全来叫喊,嗯?它的类型安全性不亚于你的solution@user3528269你确定吗?@user3528269不就是说newjs((Class)Map.Class);
class JsonSerializer<T> {
    public JsonSerializer(Supplier<T> typeSupplier){
         this.typeSupplier = typeSupplier;

         // When you need an instance of `T`:
         T instance = typeSupplier.get();
    }
}

Serializer<Map<String, byte[]>> serializer = new JsonSerializer<>(HashMap::new);
class JsonSerializer<T> {
    public JsonSerializer(T instance){
         this.instance = instance;
    }
}

Serializer<Map<String, byte[]>> serializer = new JsonSerializer<>(ImmutableMap.of());