【发布时间】:2011-04-17 08:31:42
【问题描述】:
我刚刚看到this C# question 并想知道,Java 中是否会发生类似的事情。它可以,与
class A<T> {
A(Integer o) {...}
A(T o) {...}
}
电话
new A<Integer>(43);
是模棱两可的,我看不出如何解决它。有吗?
【问题讨论】:
-
看看
Builder Design Pattern、Factory Pattern或类似的。使用上述构造函数将以A a = new A(42);之类的语句结尾,而这并不能说明42的实际含义。关于软件设计的更简洁的方法是A<Integer> a = A.createWithCapacity(42);。此外,这解决了您的歧义。 -
@coding.mof:我经常使用这些模式,但最后它们必须调用构造函数。但是,这可以很容易地解决,例如通过一个虚拟构造函数参数,因为没有人关心它的外观。我真的不记得我想要它是为了什么;也许我只是好奇。
标签: java generics constructor ambiguity