So verwenden Sie die Überschreibungsmethode in einer generischen Klasse in JAVA

Joonhee Jeong

Ich möchte Polymorphismus nicht durch Generikum beschädigen. Aber mein kurzer Gedanke zwingt zum Casting. Als ich das nicht tat, betrachtete die Eclipse eine Equals-Methode der Objektklasse. Hat jemand eine gute Lösung?? Das Problem liegt in der if-Anweisung der ArraySet-Klasse. Viel Glück.

public class Star {

    (...)

     // Public Method
     @Override
     public boolean equals(Object anObject) { (...) }

}

public class ArraySet<E> {

    // Instance Variables
    private E[] _elements;
    (...)

    // Constructors
    @SuppressWarnings("unchecked")
    public ArraySet() {
        this._size = 0;
        this._maxSize = ArraySet.DEFAULT_MAX_SIZE;
        this._elements = (E[])new Object[this._maxSize];
    }

    (...)

    **if(((Star)this._elements[i]).equals(anElement))**

    (...)
}

public class AppController {

    // Instance Variables
    private AppView _appView;
    private ArraySet<Star> _starCollector;

    // Constructor
    public AppController() {
        this._appView = new AppView();
        this._starCollector = new ArraySet<Star>();
    }
    (...)
}

Nachtrag: Ich studiere Englisch. Also danke für deinen Hinweis.

Kehrmaschine

Ich möchte Polymorphismus nicht durch Generikum beschädigen.

Sie sind nicht zu beschädigen Polymorphismus. Casting wird den ganzen Sinn der Verwendung von Generika sprengen.

Hier:

 if(((Star)this._elements[i]).equals(anElement))

Sie nicht gegossen müssen this._elements[i]zu Star. Rufen Sie einfach equalsdirekt an unter this._elements[i]:

 if(this._elements[i].equals(anElement))

die Eclipse betrachtete eine Equals-Methode ab der Objektklasse

Nein, tut es nicht. Wenn Sie dies tun this._elements[i].equals(anElement), wird zur Laufzeit der Typ von ermittelt this._elements[i]und die equalsMethode wird anstelle von , unabhängig vom Typ, aufgerufen Object. Grundsätzlich Ihre Star‚s equalswird Methode aufgerufen werden , selbst wenn Sie nicht werfen es.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Wie führen Sie die Überschreibungsmethode einer untergeordneten Klasse aus, wenn Sie Generika in c # verwenden?

So legen Sie die Basisklasseneigenschaft einer generischen Klasse fest

Verwenden Sie die Gson-Bibliothek mit einer generischen Klasse als Feld der zu serialisierenden Klasse

Verwenden Sie den Subtyp einer Klasse in einer generischen Klasse

So erstellen Sie eine abstrakte Klasse, die sich von einer generischen Klasse erstreckt

Verwenden Sie Enum.values in einer generischen Klasse, die Enum erweitert

Java Generic: So erweitern Sie eine generische Klasse einer anderen generischen Klasse

So injizieren Sie Bean in die Konfigurationsüberschreibungsmethode

So erhalten Sie die Klasse des generischen Parameters einer Schnittstelle aus der Schnittstelle

Verwenden verschiedener TypeVar für die Unterklasse einer generischen Klasse

So verwenden Sie die SUPER-Klasse, während Sie sie von einer abstrakten Klasse erweitern

So implementieren Sie den Aufruf von clone () ordnungsgemäß in einer generischen Klasse [Java]

So verwenden Sie die Java-Preferences-Klasse mit JRadioButton

So verwenden Sie die untergeordnete Klasse in Android Java (Vererbung)

Verwenden einer generischen Klasse als Java-Listentyp

So übergeben Sie zwei Formulare aus einer generischen Klasse in Django

So erhalten Sie den Subtyp einer generischen Klasse in C #

So übergeben Sie zwei Formulare aus einer generischen Klasse in Django

So finden Sie alle Klassen in einer Assembly, die eine Instanz einer generischen abstrakten Klasse sind, und implementieren eine bestimmte Schnittstelle

So greifen Sie innerhalb einer Klasse auf die Klasse selbst zu, ohne ihren Namen zu verwenden

So verwenden Sie die Funktionsvariable einer Klasse für eine andere Klasse in Python

So verwenden Sie Formularsteuerelemente aus einer Klasse

So verwenden Sie getFragmentManager() in einer statischen Klasse

So verwenden Sie globals()[] innerhalb einer Klasse

So verwenden Sie Variablen in einer anderen Klasse in einer neuen Klasse

So verwenden Sie die Klasse SalesOrganizationLink

So verwenden Sie die Klasse in Controller in Laravel

So verwenden Sie die Klasse in Javascript

So verwenden Sie die RelayCommand-Klasse

TOP Liste

  1. 1

    Hangfire funktioniert nicht wie erwartet mit ASP.NET Core 3.1

  2. 2

    Konvertiert nicht von Methodengruppe in Func <int>

  3. 3

    Wie berechnet man den Gesamtpreis einer Bestellung mit Rails?

  4. 4

    Identifizieren Sie die Werte der ersten Spalte pro ID und arbeiten Sie basierend auf diesem Wert

  5. 5

    Konvertieren Sie eine Textdatei mit mehreren Trennzeichen in CSV

  6. 6

    So greifen Sie auf eine Variable in einer Singleton-Klasse zu, die von einem Modul in Play 2.5 Scala verwendet wird

  7. 7

    So aktualisieren oder aktualisieren Sie alle Fragmente vom Viewpager Android

  8. 8

    Wie implementiere ich die "equals" -Methode für Generika mit "instanceof"?

  9. 9

    Probleme beim numerischen Integrieren einer multivariablen Funktion WRT einer einzelnen Variablen in Julia (mit hcubature)

  10. 10

    Was ist die idiomatischste Rust-Methode, um ein optionales Element eines Vec bedingt zu ändern?

  11. 11

    Printf gibt Zeichen aus, die über die angegebene Länge des Arrays hinausgehen

  12. 12

    So installieren Sie ein privates NPM-Paket über SSH

  13. 13

    findOneAndUpdate mit Push-Array-Elementen gibt Fehler im Mungo

  14. 14

    So verschieben Sie ein Bild in Flutter/Dart mit einem Draggable

  15. 15

    Verwendung eines Winkelmessers für Leistungstests

  16. 16

    Wie erstelle ich ein Objekt für ein Django-Modell mit vielen zu vielen Feldern?

  17. 17

    Beziehungen auf zusammengesetzten Schlüsseln mit sqlalchemy

  18. 18

    c # itextsharp absolute Textposition mehrzeilig

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Sind die folgenden 3 Möglichkeiten, Objekte zu definieren, identisch?

  21. 21

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

heißlabel

Archiv