【发布时间】:2021-02-26 09:22:17
【问题描述】:
我不知道标题是否可以理解,但我有这个:
public class Product {
public Integer getId() {...}
public String getName() {...}
}
public <T,V> static void method(Function<T, V> f, V value) {...}
并且我想在以下情况下出现编译错误:
method(Product::getId, "some String"); // id is not String
method(Product::getName, 123); // name is not Integer
但编译器将 V 解释为:
java Serializable & Comparable<? extends Serializable & Comparable<?>>
它可以编译,但取决于“方法”的实现方式,您会在运行时收到异常,或者它只是工作错误。
如何指示编译器匹配所需的数据类型? 而且我不想为每种可能的 V 类型编写一个“方法”。
谢谢!
【问题讨论】:
-
this 回答你的问题了吗?
-
@AndrewVershinin 不是真的,因为他们建议实现 Object.equals 之类的方法,但它发生在运行时,我希望它在编译时。不过谢谢!