日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java泛型程序设计——定义简单泛型类+泛型方法

發布時間:2023/12/3 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java泛型程序设计——定义简单泛型类+泛型方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【0】README

0.1) 本文描述+源代碼均 轉自 core java volume 1, 旨在理解 java泛型程序設計 的 定義泛型類+泛型方法的知識


【1】一個泛型類: 就是具有一個或多個類型變量的類;

1.1)看個荔枝:

public class Pair<T> {private T first;private T second;public Pair() { first = null; second = null; }public Pair(T first, T second) { this.first = first; this.second = second; }public T getFirst() { return first; }public T getSecond() { return second; }public void setFirst(T newValue) { first = newValue; }public void setSecond(T newValue) { second = newValue; } }

對以上代碼的分析(Analysis):

  • A1) Pair類引入了一個類型變量T,用尖括號(<>) 括起來, 并放在類名的后面;
  • A2)泛型類可以有多個類型變量, 如, 定義 Pair 類, 其中第一個和第二個域使用不同的類型: public class Pair
Pair<String>(); Pair<String>(String , String);

和方法:

String getFirst() String getSecond() void setFirst(String) void setSecond(String)
  • 1.2.2)一句話說完: 泛型類可以看做普通類的工廠;

1.3)看個荔枝:


【2】 泛型方法

2.1)如何定義一個帶類型參數的泛型方法:

class ArrayAlg {public static<T> T getMiddle(T... a){return a[a.length / 2];} }
  • 2.1.1)當調用一個泛型方法時, 在方法名前的尖括號中放入具體的類型:
String middle = ArrayAlg.<String>getMiddle("john", "Q.", public ");
  • 2.1.2)其實, 方法調用中可以省略 類型參數, 編譯器有足夠的信息能偶推斷出所調用的方法;也就是說, 可以調用
String middle = ArrayAlg.getMiddle("john", "Q.", public ");

2.2)在大多數情況下, 對于泛型方法的引用都沒有問題。 偶爾, 編譯器也會提示錯誤,看個荔枝:

double middle = ArrayAlg.getMiddle(3.14, 0, 1729);
  • 2.2.1)簡單地說, 編譯器將會自動打包參數為 1個 Double 和 2個Integer 對象,而后尋找這些類的共同超類型。
  • 2.2.2)事實上, 找到2個這樣的超類型:Number 和 Comparable 接口, 其本身也是一個泛型類型。 在這種情況下, 可以采取的補救措施是 將 所有的參數寫為 double 值;

Hint)

  • H1)如果想要知道 編譯器對一個泛型方法調用最終推斷出哪種類型, 某某人推薦一個方法:有目的地引入一個錯誤, 并研究所產生的錯誤消息。
  • H2)例如,看一下調用 ArrayAlg.getMiddle(“hello”, 0, null), 這是肯定錯誤 的, 將會得到錯誤報告:

    大致的意思是:可以將結果賦值給 Object、Serialiable 或 Comparable;

總結

以上是生活随笔為你收集整理的java泛型程序设计——定义简单泛型类+泛型方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。