powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / variable might already have been assigned
31 сообщений из 31, показаны все 2 страниц
variable might already have been assigned
    #38739161
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
java version "1.7.0_65"
Java(TM) SE Runtime Environment (build 1.7.0_65-b19)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
class test {
  private final int i;
  test( String[] args ) {
    try {
      i = Integer.parseInt( args[0] );
    }
    catch ( NumberFormatException ex ) {
      i = 0;  // error: variable i might already have been assigned
    };
  }
}

Почему, собственно?
Нет исключения - присвоение в try, есть - в catch. Вроде, две взаимоисключающие ветви.
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739212
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Final?

Правда, есть сомнения, что приведенный код пытались скомпилировать. Или это не джава. Или 1.7.0_65 кардинально отличается от 1.7.0_55.
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739215
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пжалуста....
Код: plaintext
1.
2.
3.
4.
5.
6.
Compiling 47 source files to D:.....\WEB-INF\classes
D:\.................\src\java\com\test.java:20: error: variable i might already have been assigned
      i = 0;  // error: variable i might already have been assigned
1 error
D:\........\nbproject\build-impl.xml:861: The following error occurred while executing this line:
D:\........r\nbproject\build-impl.xml:293: Compile failed; see the compiler error output for details.
СБОРКА ЗАВЕРШЕНА СО СБОЕМ (общее время: 11 секунды)
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739216
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверно смущает
private final int i;
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739217
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, действительно. Похоже, в первый раз имя файла было не "test".
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739365
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. SakПравда, есть сомнения, что приведенный код пытались скомпилироватьПопрошу без оскорбленийИли это не джаваИ вторично попрошу не оскорблять.Или 1.7.0_65 кардинально отличается от 1.7.0_55.Это вполне возможно. И возникает вопрос - бага или нет?
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739396
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
а что насчет final ?
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739397
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй проинициализировать и посмоти ошибку
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739403
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovAlexander A. SakПравда, есть сомнения, что приведенный код пытались скомпилироватьПопрошу без оскорблений

Неужто за 9 часов не получилось увидеть, что это я ошибся и я же об этом написал? Ну извините.

И насчет final уже три раза написали. Скажу по секрету, даже проверили.
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739414
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739416
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739423
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяа что насчет final ?Поясняю особо непонятливым.
final разрешается инициализировать только один раз. Именно это я и делаю.
Но возникает вопрос: почему условный оператор компилируется:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
class test {
  private final int i;
  test() {
    if ( 1 == System.nanoTime() % 2 )
      i = 1;
    else
      i = 0;
  }
}

а идентичный по смыслу try/catch - нет?
И там и там - две взаимоисключающие ветви исполнения.
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739425
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по второй ссылке вроде говорят, что это профиксено в восьмерке....
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739428
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вот в том-то и дело, что месяца два назад я "развлекался" с final в аналогичном спагетти.
Был это, вроде, jdk7u45. Там, после исправления логических ошибок, всё компилировалось.
Понятно, что код злобно-буратинный, но осадочек остаётся
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739437
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovДа вот в том-то и дело, что месяца два назад я "развлекался" с final в аналогичном спагетти.
Был это, вроде, jdk7u45. Там, после исправления логических ошибок, всё компилировалось.
Понятно, что код злобно-буратинный, но осадочек остаётся
а ты тот код сможешь скомпилить?
а ты под какой осью компилил?
windows_xp, windows_7?
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739445
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяа ты тот код сможешь скомпилить?
а ты под какой осью компилил?
windows_xp, windows_7?Код уже похерен, т.к. желание использовать непременно финальную переменную не всегда практично.
Компилилось под семёркой, но это совершенно по барабану, т.к. javac - ява-пюре
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739476
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovт.к. желание использовать непременно финальную переменную не всегда практично.
для "i" конечно странно, а как просто - константу - чем плохо?
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739486
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123для "i" конечно странно, а как просто - константу - чем плохо?В моём случае нужна была не константа (с этим проблем нет), а переменная, которая читалась из настроек.
Настройки, в моём случае, не меняется после инициализации. При этом для любых вариантов пользовательского ввода, включая неправильные, есть разумное значение. В такой ситуации, финальные переменные - некая эстетика или, если угодно, перфекционизм.
Ну и вот - перфекционизм, кыгыбычно, оказался не вполне практичен
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739493
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovперфекционизм
)))) да. У программистов он за спиной...рядом)))
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38739842
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov
Код: plaintext
1.
2.
java version "1.7.0_65"
Java(TM) SE Runtime Environment (build 1.7.0_65-b19)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
class test {
  private final int i;
  test( String[] args ) {
    try {
      i = Integer.parseInt( args[0] );
    }
    catch ( NumberFormatException ex ) {
      i = 0;  // error: variable i might already have been assigned
    };
  }
}

Почему, собственно?
Нет исключения - присвоение в try, есть - в catch. Вроде, две взаимоисключающие ветви.

http://stackoverflow.com/a/17075219/2674303
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38740241
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Код: plaintext
1.
2.
java version "1.7.0_65"
Java(TM) SE Runtime Environment (build 1.7.0_65-b19)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
class test {
  private final int i;
  test( String[] args ) {
    try {
      i = Integer.parseInt( args[0] );
    }
    catch ( NumberFormatException ex ) {
      i = 0;  // error: variable i might already have been assigned
    };
  }
}

Почему, собственно?
Нет исключения - присвоение в try, есть - в catch. Вроде, две взаимоисключающие ветви.

Подожди. В какой-то версии такое проходило? Или нет?

Видимо компилятор закладывается на "четвёртого валета"- вдруг в момент присвоения вылезет какой-нибудь exception?
Да, напрягает- приходится через временные переменные работать...
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38740252
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если очень хочется, можно оформить багу и попросить компилятор быть умнее. Можно и самому написать патч для OpenJDK.
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38740319
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

а ты так делал уже?
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38740323
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

и кстати почему это бага? ведь соответствует jls
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38740332
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90а ты так делал уже?
Как-так? Баги из форумов сабмитил. OpenJDK патчить нужды ещё небыло.
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38740334
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90и кстати почему это бага? ведь соответствует jls
Потому что присвоение - последняя операция в try блоке?
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38740349
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczredwhite90а ты так делал уже?
Как-так? Баги из форумов сабмитил. OpenJDK патчить нужды ещё небыло.

ого, расскажешь как это было, к чему приводило?

по поводу jls:

тут:

http://stackoverflow.com/a/17075219/2674303

кто-то раскопал jls: пишут, что после try блока переменная unassigned.
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38740358
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90ого, расскажешь как это было, к чему приводило?

Приняли багу. Потом за её судьбой не следил.

redwhite90кто-то раскопал jls: пишут, что после try блока переменная unassigned.
8ку пробовал?
https://bugs.openjdk.java.net/browse/JDK-6326693
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38740365
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

не, не ставил даже никогда)

из ссылки:
авторCUSTOMER SUBMITTED WORKAROUND :
Remove the final modifier from the variable declaration.

лоооол
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38740932
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90 http://stackoverflow.com/a/17075219/2674303 Там другой случай рассмотрен.
Мой пример под этот случай не подпадает.
...
Рейтинг: 0 / 0
variable might already have been assigned
    #38741347
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Blazkowicz,

не, не ставил даже никогда)

из ссылки:
авторCUSTOMER SUBMITTED WORKAROUND :
Remove the final modifier from the variable declaration.

лоооол

Единственный реальный способ- использовать либо локальную переменную, либо отдельную (приватную) функцию. В примере топикстартера функция к тому же улучшит читаемость кода.
А про "убрать final"- это как "доктору у меня тут болит, когда я так делаю", "а Вы так не делайте".
...
Рейтинг: 0 / 0
31 сообщений из 31, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / variable might already have been assigned
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]