Heim  >  Artikel  >  Java  >  So verwenden Sie Platzhalter, um die generische Leistung von Java zu verbessern

So verwenden Sie Platzhalter, um die generische Leistung von Java zu verbessern

王林
王林nach vorne
2023-04-23 08:04:20940Durchsuche

    Verwenden Sie Platzhalter, um Generika zu verbessern

    1. Frage

    Generika sind eine wichtige Funktion von JAVA und können die Code-Wiederverwendungsrate verbessern.

    Implementierung: Verwenden Sie Platzhalter in generischen Methoden

    2. Ideen zur Problemlösung

    Erstellen Sie eine Klasse: WildcardsTest.

    Erstellen Sie eine Methode getMiddle(), um den Mittelwert einer bestimmten Liste abzurufen.

    Verwenden Sie bei Generika „?“ als Platzhalterzeichen wie bei gewöhnlichen Typparametern. Platzhalterzeichen können beispielsweise das Schlüsselwort „extends“ verwenden, um die Obergrenze des Werts festzulegen. Beispielsweise bedeutet

    erweitert Number>

    , dass Byte, Double, Float und Integer für diesen Typparameter geeignet sind.

    Außerdem gibt es eine Obergrenze und eine Untergrenze, wie zum Beispiel

    super Number>

    w bedeutet, dass der Typparameter die übergeordnete Klasse der Number-Klasse ist, wie zum Beispiel Object.

    3 . Detaillierte Code-Erklärung

    package com.xiaoxuzhu;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    /**
     * Description:
     *
     * @author xiaoxuzhu
     * @version 1.0
     *
     * <pre class="brush:php;toolbar:false">
     * 修改记录:
     * 修改后版本	        修改人		修改日期			修改内容
     * 2022/5/10.1	    xiaoxuzhu		2022/5/10		    Create
     * 
     * @date 2022/5/10  */ public class WildcardsTest {     public static Object getMiddle(List extends Number> list) {         return list.get(list.size() / 2);     }     public static void main(String[] args) {         List ints = new ArrayList();         ints.add(1);         ints.add(2);         ints.add(3);         System.out.print("整型列表的元素:");         System.out.println(Arrays.toString(ints.toArray()));         System.out.println("整型列表的中间数:" + getMiddle(ints));         List doubles = new ArrayList();         doubles.add(1.1);         doubles.add(2.2);         doubles.add(3.3);         System.out.print("浮点列表的元素:");         System.out.println(Arrays.toString(doubles.toArray()));         System.out.println("浮点列表的中间数:" + getMiddle(doubles));     } }

    So verwenden Sie Platzhalter, um die generische Leistung von Java zu verbessern

    Ergänzende Wissenspunkte

    Generika

    Sie können , , usw. verwenden, um Generika zu deklarieren. Die Deklarationsmethode von begrenzt den Umfang von T und T kann nur eine Unterklasse von User sein.

    1. Parametertypen werden bei der Erstellung von Klassen, generischen Klassen, verwendet.

    2. Parametertypen werden bei der Erstellung von Schnittstellen, generischen Schnittstellen, verwendet.

    3. Parametertypen werden bei der Erstellung von Methoden verwendet, generische Methoden. Beachten Sie die Deklarationsposition des generischen , nach dem Modifikator der Methode und vor dem Rückgabewerttyp.

    ? Geben Sie Platzhalter ein.

    Mehrere Formen von Platzhaltern:

    1.

    2. Platzhalter für Obergrenze, erweitert Benutzer>. Gibt an, dass der Parametertyp nur eine Unterklasse von User sein kann.

    3. Platzhalter für untere Grenze, Super-Benutzer>. Gibt an, dass der Parametertyp nur die übergeordnete Klasse von User sein kann.

    public class P<T> {
      private T t;
      public T getT(){
        return t;
      }
    
      //通配符
      //设置指定类型的范围,超过范围就会报错
      //extends : 指定范围必须是其(这里是List)子类
      public void set(P<? extends List> list){
        return;
      }
    
      //super : 指定类型必须是其(这里是List)父类
      public void setSuper(P<? super List> list){
        return;
      }
    
      public static void main(String[] args) {
        new P<String>(); //T会被替换成String
        new P<Integer>(); //T会被替换成Integer
        Person<String,List,Double,User> person = new Person<String,List,Double,User>();//T会被替换成String,B会被替换成List...
        person.eat("鱼");
      }
    }
    class User<T extends P>{//这里给类的泛型指定范围,T必须要继承类P。
    
    }
    //一个类可以同时指定多个泛型
    class Person<T,B,S,N>{
      private T t;
      private B b;
      private S s;
      private N n;
      public void eat(T t){
        this.t = t;
        System.out.println("我正在吃"+this.t);
      }
    }

    Die Deklaration von Generics gibt an, dass ein unbekannter Datentyp bei der Erstellung von Klassen, Schnittstellen und Methoden verwendet werden soll. Es kann vom Typ Integer oder String sein. Definieren Sie einfach seinen Typ als T, S oder N usw.

    Beim Instanziieren müssen Sie den spezifischen T-Typ deklarieren.

    Bei der Definition der Verwendungsmethode eines generischen Objekts wissen wir immer noch nicht, um welchen Typ T es sich handelt. Es kann sich um einen String-Typ oder einen Integer-Typ handeln. Wenn T als ein bestimmter generischer Datentyp definiert ist, können die Parameter nur von diesem Datentyp sein. Derzeit werden Platzhalter anstelle bestimmter generischer Datentypen verwendet.

    Verwenden Sie Generika und Platzhalter, um die Wiederverwendbarkeit von Code zu verbessern.

    Wenn Sie ein Objekt in zwei Teile unterteilen: Deklaration und Verwendung. Generics konzentrieren sich auf die Wiederverwendung von Code bei der Typdeklaration, während Wildcards sich auf die Wiederverwendung von Code bei der Verwendung konzentrieren. Generische Elemente werden verwendet, um die Unsicherheit über interne Datentypen zu definieren, und Platzhalter werden verwendet, um die Unsicherheit über den Typ der verwendeten Objekte zu definieren.

    Das obige ist der detaillierte Inhalt vonSo verwenden Sie Platzhalter, um die generische Leistung von Java zu verbessern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen