java - 是否可以从 Java 中的对象构造函数中删除泛型类型参数?

标签 java generics constructor

在 Java 中,必须编写:

Pair<String, String> pair = new Pair<String, String>("one", "two");

如果能为您推断出类型就好了,这样您至少可以这样做:

Pair<String, String> pair = new Pair("one", "two");

并再次跳过通用参数。

你可以创建一个可以像这样欺骗它的静态方法:

public static <T, S> Pair<T, S> new_(T one, S two) {
    return new Pair<T, S>(one, two);
}

然后像这样使用它:Pair.new_("one", "two")

是否可以将类型推断构建到构造函数中以避免黑客攻击?

我在想这样的事情:

public <S,T> Pair(S one, T two) {
    this.one = one;
    this.two = two;
}

但是随后您会遇到泛型类型冲突。有没有人有什么想法?

最佳答案

有一个辅助方法很常见,它会为您暗示类型。

Pair<String, String> pair = Pair.of("one", "two");

那么它看起来不像是这样的 hack。

如果 Java 有一个内置的 Pair 类,那就太好了。 ;)

关于java - 是否可以从 Java 中的对象构造函数中删除泛型类型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6333244/

相关文章:

java - 从命令运行 Java。使用 -cp 和不使用 -cp 时发生 Java 错误(JDBC 错误/未找到类)

java - for循环遍历java中的偶数

java - 使用 String.replace() 替换斜杠即 "\"

Scala:通用整数返回类型?

java - 调用不带参数的泛型函数

c# - 为什么这些是 "Special Classes"?

java - 使用 Apache Camel 和 Spring-WS 的 WS-Security

node.js - 类型错误 : Socket is not a constructor

java - 构造函数中的 Setter 方法

c++ - 使用 push_back 函数调用复制构造函数的 vector 内存分配调用