【发布时间】:2018-05-15 20:41:56
【问题描述】:
我有两个不同的列表:
List<MyFirstClass> list1;
List<MySecondClass> list2;
现在我需要一个将List 作为输入的方法。对于两个列表,我在这种方法中所做的事情几乎相同,只是略有不同。因为我不能只是超载它们,所以我这样做了:
private String myMethod(List<?> myList) {...}
但现在我需要检查? 是什么类型,以便在方法上与给出的列表元素类型有细微的差别。
我该怎么做?或者有没有更好的方法来做到这一点?
谢谢!
编辑
除了 one 方法调用list1.method1() 和list2.method2() 之外,这两个方法实际上是相同的。这就是为什么我不想制作两种不同的方法。
【问题讨论】:
-
instanceof是你的领导 -
在泛型中检查
?的需要很好地说明了该方法首先不是泛型的理想候选者。最好使用两种方法,它们可能通过调用公共私有方法来共享公共逻辑。 -
如果没有更多代码,很难做出有意义的回答。
-
@Yahya 不,
instanceof是你的敌人。它导致脆弱的 OOP、难以扩展和容易出错的程序。请不要鼓励学习开发者依赖instanceof。 -
@progNewbie 虽然可能有多种解决方法,但如果没有更多代码,您发布XY problem 的风险很大,在这种情况下,您收到的建议可能会解决问题,但是从长远来看,这不会真正使您受益。