为了账号安全,请及时绑定邮箱和手机立即绑定

通用参数可重用性

通用参数可重用性

幕布斯7119047 2023-06-28 15:47:12
我有两种不同的方法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 Objectorextends Object是不必要的:

public static <T> void printDistances(List<Optional<T>> lengths)


查看完整回答
反对 回复 2023-06-28
?
白衣非少年

TA贡献1155条经验 获得超0个赞

它们可以是任何东西,所以你可以写:

public static void printDistances(List<? extends Optional<?>> lengths)

这是

public static void printDistances(List<? extends Optional<? extends Object>> lengths)

因为一切都继承自Object.

请注意,这也不需要引入通用参数。


查看完整回答
反对 回复 2023-06-28
  • 2 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信