猿问

通用参数可重用性

我有两种不同的方法


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) 

但还是不行,请问有什么办法吗?或者在这种情况下你不能使用泛型。


幕布斯7119047
浏览 151回答 2
2回答

回首忆惘然

您需要声明类型参数T;并且super Objectorextends Object是不必要的:public static <T> void printDistances(List<Optional<T>> lengths)

白衣非少年

它们可以是任何东西,所以你可以写:public&nbsp;static&nbsp;void&nbsp;printDistances(List<?&nbsp;extends&nbsp;Optional<?>>&nbsp;lengths)这是public&nbsp;static&nbsp;void&nbsp;printDistances(List<?&nbsp;extends&nbsp;Optional<?&nbsp;extends&nbsp;Object>>&nbsp;lengths)因为一切都继承自Object.请注意,这也不需要引入通用参数。
随时随地看视频慕课网APP

相关分类

Java
我要回答