有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java获取。当存在多个参数时初始化

    private Schema<Message<K, V>> messageSchema = RuntimeSchema.getSchema(Message.class);

如您所见,我使用的函数需要消息类型的类。但是,我不能这样做,因为它需要多个参数

在此之前,我尝试使用:

private final Class<K, V> type;

public MessageClass(Class<K, V> type) {
    this.type = type;
}

public Class<K, V> getMyType() {
    return this.type;
}

然而,由于类只接受了一个参数,所以它的表面是平直的


共 (1) 个答案

  1. # 1 楼答案

    在设计采用类定义的API时,通常有两种选择:

    1. 接受裸类,完全不支持参数化类型。此类库的用户将无法从完整的Java类型系统中受益,客户端代码将出现未经检查的警告,并使用原始类型

    2. 声明Type参数并动态读取类型参数。这类库的用户将使用一种称为type token的习惯用法将Type参数传递给库。演示代码

     RuntimeSchema.getSchema(new MyTypeToken<Message<String, Integer>>(){{}});
    

    请注意new MyTypeToken<Message<String,Integer>>(){{}}是一个匿名类型,它保存有关类型参数的信息,否则这些参数会被编译器删除,在运行时不可用