2015-01-24 4 views
1

PS: Есть вопросы с похожими темами, но то, что я прошу, существенно отличается.пустое поле может быть не инициализировано

Я понимаю причину ошибки

заготовки последнее поле не может быть инициализирован

, когда я пытаюсь сделать что-то вроде

final Object[] items; 

Но что касается меня является реализация JDK ArrayBlockingQueue HERE. Как эта линия (строка # 87) используется здесь без ошибок?

+2

Да, но вы видели [конструкторы] (http://grepcode.com/file/repository.grepcode.com/java/root /jdk/openjdk/7-b147/java/util/concurrent/ArrayBlockingQueue.java#ArrayBlockingQueue.%3Cinit%3E%28int%29)? –

ответ

4

Это происходит потому, что поля инициализируются в конструкторе

public ArrayBlockingQueue(int capacity, boolean fair) { 
     if (capacity <= 0) 
      throw new IllegalArgumentException(); 
     this.items = new Object[capacity]; 
     lock = new ReentrantLock(fair); 
     notEmpty = lock.newCondition(); 
     notFull = lock.newCondition(); 
    } 
Смежные вопросы