亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通用參數可重用性

通用參數可重用性

幕布斯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 關注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號