Java重寫toString和泛型的使用

來源:互聯網
上載者:User

標籤:objects   cme   enc   紅/黑樹狀結構   stat   on()   eth   override   ==   

一、在一個類中重寫toString方法

public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {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;}@Overridepublic String toString() {// {name=name , age= age}return "{" + "name=" + getName() +"age=" + getAge() +"}";}// 重寫 equals @Overridepublic boolean equals(Object obj) {// 判斷記憶體位址是否相同if( this == obj ){  return true;}// 判斷 傳入的obj的對象是否為空白      obj的類型與當前類型是否相同if ( obj == null || this.getClass() != obj.getClass() ){  return false;}// 強轉 類型Person p  = (Person) obj// 判斷傳入的obj對象 的 值是否為空白,判斷值是否相同,return  this.age == p.age  && Objects. equals( this.name,p.name )// 判斷 值是否相同}

二、泛型的定義和使用

  可以 靈活地 將資料類型應用到不同的  類、方法、介面中    將資料類型做為參數進行傳遞
     
  1。定義和使用含有泛型的類  ,方法,參數 
      定義格式:
          修飾符 class  類名 <代表泛型的變數>{    }
  
      例子:
      // 泛型在類中使用 定義的 位置   位於        類名 後
          public class Person <E>{
                  // 泛型作為參數   在   括弧裡
                  public boolean add (E e){
                  }
                  //  帶有 泛型 方法  位於 替換 方法類型
                  public E get(int index){
                  
                  }
          }
  2.距離定義 泛型類
              public class MyGenericClass<MVP> {
          //沒有MVP類型,在這裡代表 未知的一種資料類型 未來傳遞什麼就是什麼類型
          private MVP mvp;
  
          public void setMVP(MVP mvp) {
              this.mvp = mvp;
          }
  
          public MVP getMVP() {
              return mvp;
          }
      }
      
  3.  含有泛型的 方法 定義的格式
      格式:
          修飾符 <代表泛型的變數> 傳回值類型 方法名(參數){ }
  
          public class MyGenericMethod {
          public <MVP> void show(MVP mvp) {
              System.out.println(mvp.getClass());
          }
  
          public <MVP> MVP show2(MVP mvp) {
              return mvp;
          }
      }
  
  4.含有泛型的介面
      定義格式:
              修飾符 interface 介面名 <代表泛型的變數>{ }
              
       public interface  MyGenericInterface<E>{
                 public abstract void add(E e);
  
                  public abstract E getE(); 
       }
   
      在定義類的時候 確定泛型 的類型 
          例如:
                  public class MyImp1 implements MyGenericInterface<String> {
                          @Override
                          public void add(String e) {
                              // 省略...
                          }
?
                          @Override
                          public String getE() {
                              return null;
                          }
                }
      
      2、始終不確定泛型的類型,直到建立對象時,確定泛型的類型
          public class MyImp2<E> implements MyGenericInterface<E> {
              @Override
              public void add(E e) {
                   // 省略...
              }
  
              @Override
              public E getE() {
                  return null;
              }
          }
      /**
      確定泛型
      */
  
          public class GenericInterface {
              public static void main(String[] args) {
                  MyImp2<String>  my = new MyImp2<String>();  
                  my.add("aa");
              }
          }
一、泛型的萬用字元
      當使用 泛型類 或者介面時,傳遞的資料中,泛型的類型不確定,可以通過萬用字元<?>表示。但是一旦使用泛型萬用字元後,
   只能使用Object類的共性方法,集合中自身方法無法使用。
      
      1.萬用字元基本使用
              泛型的萬用字元的:不知道什麼時候用什麼類型 來 接受的時候, 此時 可以使用 ? 表示未知萬用字元
              
              例子:
                      public static void main(String[] args) {
                              Collection<Intger> list1 = new ArrayList<Integer>();
                              getElement(list1);
                              Collection<String> list2 = new ArrayList<String>();
                              getElement(list2);
                          }
                          public static void getElement(Collection<?> coll){}
                          //?代表可以接收任意類型
 
              Notes:                      tips:泛型不存在繼承關係 Collection<Object> list = new ArrayList<String>();這種是錯誤的;            2.萬用字元進階使用----受限泛型                  之前設定泛型的時候,實際上是可以任意設定的,只要是類 就可以設定。但是在Java的泛型中可以制定一個泛型的上線和下限                                    泛型的上限:                          格式: 類型名稱<? extends 類> 對象名稱                          意義:只能接收該 類型及其子類                                            泛型的下限:                           格式 : 類型的名稱<? super 類>  對象名稱                           意義: 只能 接收該類型 及其父類類型
                  例子:                    public static void main(String[] args) {                          Collection<Intger> list1 = new ArrayList<Integer>();                          Collection<String> list2 = new ArrayList<String>();                          Collection<Number> list3 = new ArrayList<Number>();                          Collection<Object> list4 = new ArrayList<Object>();                            getElement(list1);                          getElement(list2);//報錯                          getElement(list3);                          getElement(list4);//報錯                            getElement2(list1);//報錯                          getElement2(list2);//報錯                          getElement2(list3);                          getElement2(list4);                        }                                            // 泛型的上限:此時的泛型?,必須是Number類型或者Number類型的子類                      public static void getElement1(Collection<? extends Number> coll){}                      // 泛型的下限:此時的泛型?,必須是Number類型或者Number類型的父類                      public static void getElement2(Collection<? super Number> coll){}

常見資料結構:

棧、隊列、數組、鏈表和紅/黑樹狀結構。

 

Java重寫toString和泛型的使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.