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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

简单泛型

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

一般的類和方法,只能使用具體的類型:要么是基本類型,要么是自定義的類。如果要編寫可以應用于多種類型的代碼,這種刻板的限制對代碼的束縛就會很大。----《java Generics FAQ》

  多態算是一種泛化機制。例如,將方法的參數類型設為基類,那么該方法就可以接受從這個基類中導出的任何類作為參數。

泛型——java SE5,實現了參數化類型的概念,使代碼可以應用于多種類型。

容器類——促成泛型出現的原因。

java SE5之前:

  public class Holder2{

    private Object a;

    public Hodler2(Object a){

      this.a=a;

    }

    public void set(Object a){

      this.a=a;

    }

    public Object get(){

      return a;

    }

  }

  Hodler2可以存儲任何類型的數據,但是一個Hodler2對象卻可以存儲多種不同類型的數據。而通常我們只會使用容器來存儲一種類型的數據?! ?/p>

泛型的目的之一就是用來指定容器要持有什么類型的數據,而且由編譯器來保證類型的正確性。

java SE5之后:

  public class Hodler3<T>{

    public T a;

    public Hodler3(T a){

      this.a=a;

    }

    public void set(T a){

      this.a=a;

    }

    public T get(){

      return a;

    }

  }

  將需要使用的類型參數,用尖括號括起,放在類名后面。

1、元組類庫

  僅一次方法調用就能返回多個對象的決解方法——創建一個對象,用它來持有想要返回的多個對象。

  元組——將一組對象直接打包存儲于其中的一個單一對象。這個容器對象允許讀取其中元素,但是不允許向其中存放新的對象。

  2維元組:

    public class TwoTuple<A,B>{

      public final A first;

      public final B second;

      public TwoTuple(A a,B b){

        first=a;

        second=b;

      }

      public String toString(){

        return "("+first+","+second+")";

      }

    }

    如果使用具有不同元素的元組,就強制要求他們另外創建一個新的TwoTuple對象。

  使用繼承機制實現長度更長的元組

    public class ThreeTuple<A,B,C> extends TwoTuple<A,B>{

      public final C third;

      public ThreeTuple(A a,B b,C c){

        super(a,b);

        third=c;

      }

      ...

    }

  使用元組:

    static TwoTuple<String,Integer> f(){

      return new TwoTuple<String,Integer>("hi",47);

    }

2、一個堆棧類

   public class LinkedStack<T>{

     private static class Node<U>{

       U item;

       Node<U> next;

       Node(){

         item=null;

         next=null; 

       }

       Node(U item,Node<U> next){

         this.item=item;

         this.next=next;

       }

       boolean end(){ ? ? ?//末端哨兵

         return item==null&&next==null;

       }

     }

     private Node<T> top=new Node<T>();

     public void push(T item){

       top=new Node<T>(item,top);

     }

     public T pop(){

       T result=top.item;

       if(!top.end())

         top=top.next;

       return result;

     }

   }

3、RandomList——每次調用select方法時,他可以隨機地選取一個元素

  public class RandomList<T>{

    private ArrayList<T>storage=new ArrayList<T>();

    private Random rand=new Random(47);

    public void add(T item){

      storage.add(item);

    }?

    public T select(){

      return storage.get(rand.nextInt(storage.size()));

    }

  }

------------------------------------------------------------from:http://lavasoft.blog.51cto.com/62575/18771/-----------------------------------------------------------------------------------

附:java中final的作用——

  1、final修飾類——

    final類不能被繼承,因此final類的成員方法沒有機會被覆蓋,默認都是final的。

  2、final方法——

    如果一個類不允許其子類覆蓋某個方法,則可以把這個方法聲明為final方法。

    final方法的使用原因:

      把方法鎖定,防止任何繼承類修改它的意義和實現。

      高效。編譯器遇到調用final方法時候會轉入內嵌機制,大大提高執行效率。

  3、final變量——

    用final修飾的成員變量表示常量,值一旦給定就無法改變。

  4、final參數——

    當函數的參數為final時,可以讀取不可修改。

注意:final類不能用于修飾構造方法。

   父類private成員方法是不能被子類方法覆蓋的,因此private類型的方法默認都是final類的。

java中static的作用——

  1、static變量

    被static修飾的變量稱為靜態變量或類變量。沒被static修飾的變量稱為實例變量。兩者區別:

      靜態變量在內存中只有一個拷貝(節省內存),JVM只為靜態變量分配一次內存,在加載類的過程中完成靜態變量的內存分配??捎妙惷苯釉L問,也可通過對象訪問(不推薦)。

      對于實例變量,每創建一個實例就會為示例分配一次內存,實例變量在內存中有多個拷貝,互不影響。

  2、靜態方法

      靜態方法可以通過類名調用,任何實例也可以調用,因此靜態方法中不能用this和super關鍵字。不能直接訪問所屬類的實例變量和實例方法,只能訪問所屬類的成員變量和成員方法。

      因為static方法獨立于任何實例,因此static方法必須被實現,不能時abstract。

  3、靜態代碼塊

      static代碼塊也叫靜態代碼塊,不在任何的方法體內,JVM加載類時會執行這些代碼塊,如果靜態代碼塊有多個,JVM將會按照它們在類中出現的順序依次執行,每個代碼塊只會被執行一次。

注意:static變量之前加private修飾,表示這個變量不能在其他類中通過類名直接引用。

  4、final+static——“全局變量”

     對于變量,表示一旦給值就不能修改,并且通過類名來訪問。

     對于方法,表示不可覆蓋,并且可以通過類名來訪問。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

轉載于:https://www.cnblogs.com/Wan-notes/p/6795308.html

總結

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

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