2017-12-24 2 views
0

Ich arbeite gerade an der Erstellung eines Mods für Minecraft. Ich versuche, eine Objektklasse zu erstellen, mit der ich Projektileinheiten feuern kann. Dies würde kurz vor dem Testen der Entitäten stattfinden, bevor eine individualisierte Klasse erstellt wird. Ich versuche, eine Eingabe in dem Konstruktor zu verwenden, der jede untergeordnete Entität meiner übergeordneten Klasse für Projektileinheiten (AbstractEntityProjectile) als den Typ übernimmt.minecraft: Wie man eine einzelne Item-Klasse erstellt, um mehrere Entity-Typen auszulösen

Ich habe dies versucht, sowohl mit ? und T:

public EntityGun(<? extends AbstractEntityProjectile> entity) { 
    /* code */ 
} 

Gibt es eine andere Syntax, dies zu tun? Oder muss ich das anders machen?

+0

verwenden Sie einfach public EntityGun (AbstractEntityProjectile entity). Dadurch wird ein Verweis auf ein Objekt übergeben, das die Klasse Abstract erweitert haben muss. Die Referenz lautet jedoch "AbstractEntityProjectile". Sie können also nur Methoden aus der Klasse aufrufen, es sei denn, Sie konvertieren in die Klasse, die die abstrakte Klasse implementiert hat. – Zachary

Antwort

0

Um das zu erreichen, was Sie wollen, einen Parameter an den Konstruktor übergeben, von denen die Objektklasse der AbstractEntityProjectile abstrakte Klasse erweitert, verwenden Sie einfach:

public EntityGun (AbstractEntityProjectile entity) { 
    /* code */ 
} 

ein EntityGun Objekt, Sie Klasse der Entität zu initialisieren muss die AbstractEntityProjectile-Klasse erweitert haben. Beachten Sie, dass die Entität den Typ AbstractEntityProjectile hat. Daher können Sie nur Methoden aufrufen, die explizit in der abstrakten AbstractEntityProjectile-Klasse oder von AbstractEntityProjectile geerbt wurden. Um mit Methoden zu arbeiten, die in der Klasse 'true' des Parameters eingeführt wurden, müssen Sie sie in die entsprechende Klasse umwandeln.

Verwandte Themen