2017-01-28 1 views
-3

Java является нерациональной https://hackernoon.com/java-is-unsound-28c84cb2b3f#.8tf5qumlbниже код компилирует в некотором IDE, а не в каком-то IDE «Java является нерациональным»

В этой статье типобезопасности Java обсуждается и компилирует в некоторых Java-версии, а не компиляции в некоторых Java версия.

class Unsound { 
    static class Constrain<A,B extends A>{} 
    static class Bind<A> { 
     <B extends A> 
     A upcast(Constrain<A,B> constrain , B b){ 
      return b; 
     } 
    } 
    static <T,U> U coerce(T t){ 
     Constrain<U,? super T> constrain = null; 
     Bind <U> bind = new Bind<U>(); 
     return bind.upcast(constrain,t); 
    } 
    public static void main(String ...s){ 
     String zero = Unsound.<Integer,String>coerce(0); 
    } 
} 

https://raw.githubusercontent.com/namin/unsound/master/doc/unsound-oopsla16.pdf

Так что, если они говорят, что это сводится к нулю указатель ошибки. Но в отличие от большинства нуль-указатель ошибок

Так что просто не в состоянии понять его компиляции или неприменение компиляции на разных IDE

Открытая ошибка также есть связанные с ним https://bugs.openjdk.java.net/browse/JDK-8054941

и затмение также https://bugs.eclipse.org/bugs/show_bug.cgi?id=510900

+0

Почему это компилируется в некоторой версии, а не в некоторой версии. Что-то решено или еще предстоит решить? – SarthAk

+0

Это лучше, чем предыдущая попытка. Но в чем вопрос? – luk2302

+0

Если ваш вопрос «должен скомпилировать ваш код», ответ будет отрицательным. Если это так, у компилятора есть ошибка. –

ответ

0

Ответ на ваш вопрос в статье, на которую вы ссылались.

Если ваш компилятор не печатает, проверьте наш пример, у меня есть новости для вас. Нет, ваш компилятор не поймает ошибку. На самом деле у вашего компилятора есть ошибка. Ваш компилятор сломан. Спецификация Java говорит, что этот пример должен вводить проверку и компиляцию.

Теперь только пара это с тем, что разные IDE могут использовать различные компилятор (Eclipse, использует собственные, IntelliJ использует JAVAC по умолчанию, но это настраивается, и т.д.), и вы получите ваш подозреваемый. :)

Смежные вопросы