Как удостовериться, что поле никогда не будет пустым в классе Java

У меня была точно такая же проблема, когда jBoss зависал на driver.getConnection (). Однако я использовал jBoss EAP 5.1, java 1.6.0_37x64, Sql Server 2005 и jtds1.2.5 в качестве драйвера jdbc.

Обходной путь, который мне пришлось использовать, - это настройка jvm при запуске: -Djsse.enableCBCProtection = false, и это решило ее.

Я не считаю это исправлением, а скорее обходным решением на данный момент.

Я нашел ошибку: 7105007: Microsoft & amp; JTDS JDBC драйвер сломался после обновления до 1.6.0_29 , который был очень похож, но имел другую причину. Что было интересно, так это то, что он появился как на драйверах MS, так и на драйверах jtds.

5
задан IAdapter 9 June 2009 в 15:52
поделиться

4 ответа

Объявить bar как final , например:

private final Object bar;
16
ответ дан 18 December 2019 в 05:44
поделиться

Вы ищете ключевое слово final.

class foo
{
   private final Object bar;

   public foo(Object pBar)
   {
       //Error check so that pBar is not null
       //If it's not, set bar to pBar
       bar = pBar;
   }
}

Теперь панель нельзя изменить

7
ответ дан 18 December 2019 в 05:44
поделиться

Оба предыдущих ответа верны, но для pBar все равно можно установить значение null:

new foo(null);

Итак, окончательный ответ - использовать ключевое слово final и убедиться, что pBar не равно null (как раньше):

public class Foo
{
   private final Object bar;

    public Foo(Object pBar)
    {
        if (pBar == null)
        {
           bar = new Object();
        }else{
           bar = pBar;
        }
     }
 }
6
ответ дан 18 December 2019 в 05:44
поделиться

Вы хотите объявить поле как final, например

private final Object foo;

Это имеет дополнительное преимущество, заключающееся в том, что при параллельном выполнении поле гарантированно инициализируется после завершения работы конструктора.

Обратите внимание, что это предотвращает только замену объекта другим. Это не предотвращает модификации объекта методами объекта, например сеттерами, в отличие от const в C / C ++.

1
ответ дан 18 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: