我来自Java语言背景,在处理Java强类型时遇到了麻烦,尤其是在尝试创建泛型类时。
说我有一个名为Signal的类,该类接受一个引用和一个有效负载作为参数。引用将始终为String类型,但是有效负载的类型可能会有所不同。
我想保持有效载荷的类型通用,以便能够将各种类传递给它。但是,如果我理解正确的话,Java不允许我声明通用字段!?
那我该怎么办呢?
下面是我所想到的一个简单示例。 我的自定义“ <#>”符号是我遇到麻烦的地方。 如何用一些适当的通用语法替换它?
class Signal {
String ref;
<#> payload;
public Signal(String ref, <#> payload) {
this.ref = ref;
this.payload = payload;
}
}
还是我会以错误的方式进行操作?
有没有更好的方法来处理类型未知的参数?
感谢所有信息!
答案 0 :(得分:1)
Java确实允许使用通用字段。您正在寻找:
class Signal <T> { // notice the generic introduction here: <T>
String ref;
T payload; // now we can use T to represent any generic type
public Signal(String ref, T payload) { // same here
this.ref = ref;
this.payload = payload;
}
}
请注意,T
可以是任何可行的名称(类似于引用的命名规则)。
用法:
Signal<Double> first = new Signal<>("foo", 2.0);
Signal<String> second = new Signal<>("foo", "bar");