好吧,我完全無語。我正在用vaadin框架構建一個GUI,但這對問題應該沒有關係。我的繼承人代碼:布爾var具有不同的值,然後查詢填充它?
private final boolean readOnly = GenericAdapterFrontendApplication
.getInstance().getUserRole().equals(UserRole.READ);
public InstitutionDetailMasterData(Institution i) {
super(i);
}
protected void createSectionContent(Institution i, Panel p) {
p.addComponent(createRow(
ViewUtils.getMessage("view.institut.masterdata." + PROP_NAME),
i.getName()));
p.addComponent(createRow(
ViewUtils.getMessage("view.institut.masterdata."
+ PROP_DEUBA_ID), i.getDeubaId()));
p.addComponent(createRow(ViewUtils
.getMessage("view.institut.masterdata." + PROP_VARIANT), i
.getVariant().toString()));
p.addComponent(createRow(
ViewUtils.getMessage("view.institut.masterdata."
+ PROP_FIELD_SEP), i.getFieldSeparator()));
p.addComponent(createRow(
ViewUtils.getMessage("view.institut.masterdata."
+ PROP_RECORD_SEP), i.getRecordSeparator()));
p.addComponent(createRow(
ViewUtils.getMessage("view.institut.masterdata."
+ PROP_DATE_FORMAT), i.getDateFormat()));
p.addComponent(createRow(
ViewUtils.getMessage("view.institut.masterdata."
+ PROP_DECIMAL_SEP), i.getDecimalSeparator()));
p.addComponent(createRow(
ViewUtils.getMessage("view.institut.masterdata."
+ PROP_THOUSAND_SEP), i.getThousandSeparator()));
p.addComponent(createRow(ViewUtils
.getMessage("view.institut.masterdata." + PROP_QUOTING), i
.getQuoting()));
p.addComponent(createRow(
ViewUtils.getMessage("view.institut.masterdata."
+ PROP_FREQUENCY), i.getFrequency()));
System.out.println(GenericAdapterFrontendApplication
.getInstance().getUserRole().equals(UserRole.READ));
System.out.println(this.readOnly);
editButton.setVisible(!this.readOnly);
現在重要的部分是隻讀的在開始和兩個打印ATH結束的聲明,因爲你的打印:
true
false
這怎麼可能呢?我的意思是我可以使用直接查詢來設置按鈕的可見性,但它讓我感到困擾,那些值對我來說似乎是不可能的。如果有人有解釋的想法,請讓我知道。 謝謝
值可能在運行時改變?成員變量聲明將在類實例化時分配,而println語句中的值將在每次調用該方法時進行評估。根據這個框架中的對象生命週期,也許你的類在GenericAdapterFrontendApplication被正確設置使用之前實例化。 –