Описание тега jls
Спецификация языка Java - это исчерпывающий технический справочник по языку программирования Java.
3
ответа
Порядок выполнения статических блоков в типе Enum по отношению к конструктору
Это из эффективной Java: // Implementing a fromString method on an enum type private static final Map<String, Operation> stringToEnum = new HashMap<String, Operation>(); static { // Initialize map from constant name to enum constant for …
02 авг '12 в 11:43
1
ответ
Является ли документация JDK частью спецификации языка?
Существует только одна официальная Спецификация языка Java, и все реализации Java должны соответствовать ей. Как насчет документации API: все ли реализации Java должны соответствовать этой версии или реализация может по-разному определять поведение …
26 апр '17 в 08:53
1
ответ
Строковые литералы, хранящиеся в пуле строк, уникальны?
Я понимаю, что строки могут быть интернированы, но это действие, которое выполняется религиозно, когда создается новый объект строки? JLS раздел 3.10.5 строковые литералы.
28 сен '11 в 23:44
1
ответ
Идентификаторы в угловых скобках на JVM, вызывающие внутреннюю ошибку метода
В следующем коде используется метод с именем <traitinit>, но отклоняется JVM с VerifyError: class Foo { static void `<traitinit>`() // pseudocode identifier, not possible in Java { } static void test() { `<traitinit>`() // call the…
23 мар '16 в 20:04
1
ответ
Метод реализации Выдает исключение, но метод интерфейса не определяет, поскольку он вызывает исключение
При реализации интерфейса вполне допустимо, чтобы методы интерфейса не генерировали исключение, но метод класса реализации может генерировать исключение. Определение интерфейса public interface exceptionNotDefined { void doNotThrowException(); } Реа…
26 авг '14 в 10:49
3
ответа
Изменение конечных переменных посредством отражения, почему разница между статической и нестатической конечной переменной
Пожалуйста, обратитесь к приведенному ниже коду. Когда я запускаю код, я могу изменить значение конечной нестатической переменной. Но если я попытаюсь изменить значение окончательной статической переменной, то получится java.lang.IllegalAccessExcept…
08 авг '13 в 11:09
1
ответ
Каково точное значение конечного безопасного поля в JLS?
Термин " конечный полевой безопасный контекст" часто используется в параграфе 17.5.3 JLS (последующее изменение конечных полей). Хотя, как можно понять из спецификации (если я ошибаюсь, поправьте меня) An implementation may provide a way to execute …
09 сен '14 в 08:12
2
ответа
Расширяется примитивная литература
Я читаю спецификацию языка Java, о преобразованиях Назначений, и я пытался получить основные правила, и есть некоторая литература, которая меня сильно смущает. Есть несколько публикаций, которые говорят: Integer s11 = (short)7; требуется расширение …
04 янв '18 в 07:32
3
ответа
Правда ли, что каждому внутреннему классу требуется включающий экземпляр?
Термин " внутренний класс" принято считать "вложенным классом, который требует включающего экземпляра". Тем не менее, JLS гласит следующее: 8.1.3. Внутренние классы и вложенные экземпляры [...] Внутренние классы включают в себя локальные (§14.3), ан…
09 дек '13 в 10:58
2
ответа
Почему абстрактный не работает для неявных методов интерфейса?
Читая спецификацию JLS для интерфейсов, я наткнулся на следующую фразу: Если у интерфейса нет прямых суперинтерфейсов, то этот интерфейс неявно объявляет открытый абстрактный метод-член m с сигнатурой s, типом возврата r и параметром throws t, соотв…
29 июн '14 в 02:51
2
ответа
Члены типа пересечения
Этот вопрос относится к: Лямбда-тип пересечения Вопрос Пожалуйста, смотрите пример: public class X { Object o = (I & J) () -> {}; } interface I { public void foo(); } interface J { public void foo(); public void bar(); } Я пытаюсь понять, как…
11 июл '14 в 11:23
2
ответа
Почему Java преобразует байты и короткие операнды в целые во время числового продвижения
Каковы причины расширения небольших типов данных (например, байтов) до int в процессе числового продвижения? Разве нельзя было бы выполнить большинство операций непосредственно с этими меньшими типами данных?
01 янв '11 в 20:28
2
ответа
Java: разрешение перегруженного метода и varargs - запутанный пример
Просто когда я подумал, что понял JLS15.12 применительно к varargs, вот этот пример: package com.example.test.reflect; public class MethodResolutionTest2 { public int compute(Object obj1, Object obj2) { return 42; } public int compute(String s, Obje…
17 май '11 в 15:05
1
ответ
Что такое содержательное утверждение?
JLS 14.21 используется в описании правила для недостижимого оператора некоторых содержащихся операторов. Чтобы быть более конкретным, я приведу цитату: Оператор while может обычно завершаться, если хотя бы одно из следующих условий верно: Оператор …
14 окт '14 в 14:53
0
ответов
Почему изменение параметра типа этого класса влияет на область действия наследуемого вложенного класса?
Редактировать: люди, кажется, были сбиты с толку моими опечатками и неправильным использованием терминологии. Я переписал вопрос для решения этих проблем. Пожалуйста, прости любые дальнейшие ошибки. У меня есть общий класс A и два класса, которые ра…
08 май '17 в 18:21
1
ответ
Java - реализация нескольких интерфейсов с одним и тем же методом и разными типами возврата
Рассмотрим следующий код: public interface A { public A another(); } public interface B { public B another(); } public interface AB extends A,B { public AB another(); } Это приводит к ошибке компиляции на AB: типы B и A несовместимы; оба определяют …
05 июл '12 в 11:18
2
ответа
Разрешено ли компилятору Java быть чувствительным к потоку для статических вызовов?
Вот краткий пример из раздела JLS 8.4.8.2. class Super { static String greeting() { return "Goodnight"; } String name() { return "Richard"; } } class Sub extends Super { static String greeting() { return "Hello"; } String name() { return "Dick"; } }…
12 июл '12 в 20:24
1
ответ
В чем разница между JLS и JSR и JEP
JLS - спецификация языка Java - https://docs.oracle.com/javase/specs/jls/se9/html/index.html JSR - Запросы спецификаций Java - https://jcp.org/aboutJava/communityprocess/final/jsr376/index.html (система модулей) формальные документы, описывающие пре…
11 июл '18 в 09:48
2
ответа
Присвоение эффективно конечной переменной в операторе try/catch
Следующий код не компилируется с javac 1.8.0_144 и ecj: private LongSupplier foo() { long fileSize; try { fileSize = canThrow(); } catch (IOException e) { fileSize = 42; } LongSupplier foo = () -> 1 + fileSize; return foo; } Мне интересно, если э…
22 дек '17 в 13:31
3
ответа
Произошло ли когда-нибудь "критическое изменение" в спецификации языка Java?
За исключением, вероятно, широко известного исключения из введения ключевого слова "assert", было ли когда-либо изменение в спецификации языка Java, из-за которого старый код больше не был совместим с более новыми исходными уровнями JDK? Резюме до с…
12 май '13 в 10:27