Java -Anmerkungen und ErbschaftJava

Java-Forum
Anonymous
 Java -Anmerkungen und Erbschaft

Post by Anonymous »

Ich habe Annotation < /p>

Code: Select all

@Retention(RUNTIME)
@Target({FIELD, METHOD})
@Inherited
public @interface BindTickrate {
public float Float() default 0;
}
< /code>
und 2 Klassen < /p>
public MouseFollower{
@BindTickrate(Float = 960)
protected float speed;

public void onTick(){
//look at the mouse
//move to the mouse with speed;
}

public MouseFollower2 extends MouseFollower{
@BindTickrate(Float = 480)
protected float speed;
}
< /code>
Die Idee ist, dass ich die ontickchange () -Methode zum Berechnen @BindTickrate -Variablen < /p>
habepublic void onTickchange(){
//tickrate seted
System.out.println("Set tickrate: "+tickrate);
System.out.println(this.getClass().getName());
for(Field field: this.getClass().getDeclaredFields()){
BindTickrate annotation = null;
if((annotation = field.getAnnotation(BindTickrate.class)) != null) {
System.out.println("Found "+field)
field.setAccessible(true);
switch(field.getType().getName()) {
case "float" -> {field.setFloat(this, annotation.Float() / tickrate);}
}
}
System.out.println("Seted "+field.getFloat(this));
}
}
< /code>
Mausfollower implementiert die Klasse mit OnTickchange -Methode. Und ich werde so ausgeben: < /p>
Set tickrate: 100
MouseFollower
Found protected float MouseFollower.speed
Seted 9.6
Set tickrate: 100
MouseFollower2
Found protected float MouseFollower2.speed
Seted 4.8
< /code>
Aber MouseFollower2 hat keine Geschwindigkeit, da diese Methode MOUSFOLLOWER2.Speed ​​auf 4.8 festgelegt hat, aber in der Inherit -Methode ontick () verwendet es mousefollower.speed, was 0 ist, weil nicht eingestellt ist.
Wenn ich MouseFollower setze, verlieh auf 10, wenn MouseFollower2 mit gegebener Geschwindigkeit zu Maus folgt und Mausfollower alte Geschwindigkeit hat. Wenn ich MOUSFOLLOWOWOWER festlegt, gibt es keinen Effekt. und Mausfollower2.Speed. Setzen Sie 2, aber verwenden Sie 1.
Wenn ich MOuseFollower2.Speed ​​nicht deklariere, wie ich @BindTickrate Float < /code> Feld ändere? Bewegen Sie sich ohne Mumbo -Jumbo in Unterklassen zur Maus, aber @Override 
arbeiten nur mit Methoden. Vollständige übergeordnete Ontick -Methode lösen dieses Problem auf, aber es ist Bullshit

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post