我有两种不同的方法public static void printRoutes(List<Optional<String>> routes) { for (int i = 0; i < routes.size(); i++) { if(routes.get(i).isPresent()) { System.out.println("Output #" + (i+1) + ": "+routes.get(i).get());和public static void printRoutes(List<Optional<Integer>> routes) { for (int i = 0; i < routes.size(); i++) { if(routes.get(i).isPresent()) { System.out.println("Output #" + (i+1) + ": "+routes.get(i).get());正如你所看到的,它们基本上是相同的,只是参数类型不同。由于我只是打印它们,这意味着使用“.toString()”方法,我认为应该有一种方法可以对两者使用相同的方法。我试过public static void printRoutes(List<Optional<T super Object>> lengths) 和public static void printRoutes(List<Optional<T extends Object>> lengths) 但还是不行,请问有什么办法吗?或者在这种情况下你不能使用泛型。
2 回答
回首忆惘然
TA贡献1847条经验 获得超11个赞
您需要声明类型参数T
;并且super Object
orextends Object
是不必要的:
public static <T> void printDistances(List<Optional<T>> lengths)
白衣非少年
TA贡献1155条经验 获得超0个赞
它们可以是任何东西,所以你可以写:
public static void printDistances(List<? extends Optional<?>> lengths)
这是
public static void printDistances(List<? extends Optional<? extends Object>> lengths)
因为一切都继承自Object
.
请注意,这也不需要引入通用参数。
添加回答
举报
0/150
提交
取消