есть ли разница между этими двумя инициализациями конечной переменной value
?
class Test {
final int value = 7;
Test() {}
}
и
class Test {
final int value;
Test() {
value = 7;
}
}
-
EDIT: Более сложный пример, включающий подклассы. В этом случае на стандартный вывод выводится «0», но если я присваиваю значение напрямую, выводится 7.
import javax.swing.*;
import java.beans.PropertyChangeListener;
class TestBox extends JCheckBox {
final int value;
public TestBox() {
value = 7;
}
public void addPropertyChangeListener(PropertyChangeListener l) {
System.out.println(value);
super.addPropertyChangeListener(l);
}
public static void main(String... args) {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.setContentPane(panel);
panel.add(new TestBox());
frame.pack();
frame.setVisible(true);
}
}