Zuweisungskompatibilitätsproblem, Eclipse 3.5, javac



  • Hi,

    ursprünglich ging es um Zuweisungskompatibilität, nun habe ich bemerkt das wenn
    man in Eclipse den unten stehenden Code kompiliert und ausführt tatsächlich
    etwas ausgegeben wird. Nimmt man jedoch javac von der Kommandozeile aus schlägt
    er mit folgender Meldung fehl.

    inconvertible types found : java.lang.Enum<capture#876 of ?> required: test
    test b = (test)enumValue;

    Verwendet man einen dynamischen Cast funktioniert es auch mit javac. Neben dem
    merkwürdigen Verhalten von Eclipse ist meine ursprüngliche Frage jedoch,
    weshalb dieser Cast so nicht möglich ist wie er da steht. IMHO ging das mal vor
    Java 1.5.

    
    ```java
    enum test{A,B}
    
    class EnumTest{
    	public void enumTest(Enum<?> enumValue){
    		test b = (test)enumValue;
    //		test b = test.class.cast(enumValue);
    		System.out.println(b);
    	}
    }
    
    public class Testprojekt {
    	public static void main(String[] args) {
    		new EnumTest().enumTest(test.B);
    	}
    }
    ```


  • Scheint wohl ein Fehler des Compilers zu sein. Das Problem wurd auch schon hier diskutiert (http://72.5.124.102/thread.jspa?threadID=5171568&tstart=751). Im Bug-Report von Sun wird eine Behebung für die Java-Version 1.7 angekündigt.


Anmelden zum Antworten