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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

自定义泛型集合,接口

發布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自定义泛型集合,接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自定義泛型集合

package C12_21;public class abstractList {public static void main(String[] args) {stu<String> stus = new stu<String>();stus.setS("hello");System.out.println(stus.getS());// 靈活, 可以傳入任意數據類型。 將運行錯誤轉變為編譯錯誤。stus.show("hhh");}}// 從泛型集合, 可以 學到自定義集合類。 class stu<S, V> {private S s;private V v;public void setS(S s) {this.s = s;}public S getS() {return s;}public void setV(v v) {this.v = v;}public V getV(V v) {return v;}// 自定義泛型方法// 語法:自定義泛型方法 修飾符 + <類型> + 返回值 + 方法名(參數) { 方法體 } public <T> T show(T t) {System.out.println(t);return t;}// 靜態泛型方法 類型J和 S,不能一樣public static <J> void setObj(J j) {System.out.println(j);}// 下面兩個方法是易錯的。public static<S> void setObj(S s) { // 無法解析str或str不是字段// System.out.println(s.str);// 正確System.out.println(s); }// 錯誤, 不能對非靜態類型S進行靜態引用/*public static void setObj<S s> {System.out.println(s);}*/ }

Result

hello hhh

自定義泛型接口, Comparable

// 泛型接口A,可以支持多種類型讓子類實現。 interface A<O> { }class B implements A<String> {public void show(String str) {System.out.println(str);} }

Demo

  • Comparable 比較接口就是泛型接口應用的一個經典例子。
  • 先看看基本數據類型的compareTo方法
// compareTo 方法的原理System.out.println("a".compareTo("b")); // -1System.out.println("b".compareTo("a")); // 1System.out.println("a".compareTo("a")); // 0System.out.println("a".compareTo("c")); // -2/*** 用正數 表示 左邊大于右邊, 負數反之* 0 表示兩對象相等* 所以,有了用自定義的對象比較,按照年齡,或者名字排序了*/ class Student implements Comparable<Student> {private String name;private int age;public Student() {}public Student(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String toString() {return "Student [name=" + name + ", age=" + age + "]";}// 按照年齡比較優先,年齡相等,再姓名public int compareTo(Student stu) {int a = this.age - stu.age;return a == 0 ? this.name.compareTo(stu.name) : a;}}

測試

Student[] stus = new Student[3];stus[0] = new Student("abc", 12);stus[1] = new Student("jb", 18);stus[2] = new Student("abcc", 2);for (Student stu : stus) {System.out.print(stu + "\t"); }// Comparable 接口, 用arrays的sort排序。Arrays.sort(stus);System.out.println("\n" + "排序后");for (Student stu : stus) {System.out.print(stu + "\t");}

結果如下

Student [name=abc, age=12] Student [name=jb, age=18] Student [name=abcc, age=2] 排序后 Student [name=abcc, age=2] Student [name=abc, age=12] Student [name=jb, age=18]

總結

以上是生活随笔為你收集整理的自定义泛型集合,接口的全部內容,希望文章能夠幫你解決所遇到的問題。

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