2016-07-25 13 views
0

nehme ich einen solchen Code in Groovy haben:merkwürdige Fehler hervorheben 'Instanzmethode kann die statische Methode nicht außer Kraft setzen' in Eclipse

class Base { 
    static String name = 'base'; 
} 

class Child extends Base { 
String name = 'child'; 

static main(args){ 
    def ch = new Child(); 
    println ch.name; 
} 

} 

Eclipse-Mars 4.5.2 hebt hervor, dass es ein Fehler ist:

This instance method cannot override the static method from Base

Ich überschreibe keine statischen Methoden und es wird ausgeführt wie ich es erwarte, also was ist Eclipse falsch?

+0

Wo wird es gemeldet? – nitind

Antwort

0

Die Fehlermeldung könnte verbessert werden, da das, was Sie hier tun, nicht mit einer Methode zusammenhängt (außer wenn Eclipse die Methoden im generierten Java berücksichtigt), hängt es mit einer Variablen zusammen. Außerdem kümmert sich Groovy nicht darum, damit der Code funktioniert, aber Java würde es nicht mögen.

Eclipse informiert Sie darüber, dass Sie eine Instanzvariable in Child definieren, die denselben Namen wie eine statische Variable in Base hat.

Sie sollten einen statischen Modifikator in beiden Klassen haben.

class Child extends Base { 
    static String name = 'child' 
    //... 
}