Инициализируйте последнюю переменную перед конструктором в Java

x = document.getElementById("my_div_id");   //Get div by ID
x.style.display = "none";                   //Hide
x.style.display = "block";                  //Show
TEST DIV

Ваш div должен быть в этом формате

VALUE

Больше информации здесь: [113 ] W3School Toggle

7
задан Gray 16 June 2012 в 14:39
поделиться

8 ответов

Я действительно не понимаю Вашего вопроса. Это

public class Test3 {
    private final String test = "test123";

    public Test3() {
        System.out.println("Test = "+test);
    }

    public static void main(String[] args) {
        Test3 t = new Test3();
    }
}

выполняется следующим образом:

$ javac Test3.java && java Test3
Test = test123
17
ответ дан 6 December 2019 в 04:54
поделиться

Сделайте инициализацию в конструкторе, например,

private final String name;
private YourObj() {
    name = "a name";
}

Конечно, если Вы на самом деле знаете значение во время объявления переменной, имеет больше смысла делать это константой, например,

private static final String NAME = "a name";
15
ответ дан 6 December 2019 в 04:54
поделиться

При отмечании его статичный, позволит Вам использовать его в конструкторе, но так как Вы сделали это финалом, это не может быть изменено.

private static final String name = "a_name";

возможно использовать статический init блок также.

private static final String name;

static { name = "a_name"; }

При попытке изменить значение в конструкторе, то Вы не можете присвоить значение по умолчанию, или необходимо сделать его не окончательным.

private String name = "a_name";
Foo( String name )
{
    this.name = name;
}

или

private final String name;

Foo( String name )
{
    if( s == null )
       this.name = "a_name";
    else
       this.name = name;
}
3
ответ дан 6 December 2019 в 04:54
поделиться

В этом случае можно отметить поле как 'статичное' также.

2
ответ дан 6 December 2019 в 04:54
поделиться

Другая возможность состоит в том, чтобы инициализировать поле в блоке инициализатора экземпляра:

public class Foo {
        final String bar;

        {
                System.out.println("initializing bar");
                bar = "created at " + System.currentTimeMillis();
        }

        public Foo() {
                System.out.println("in constructor. bar=" + bar);

        }

        public static void main(String[] args) {
                new Foo();
        }
}
2
ответ дан 6 December 2019 в 04:54
поделиться
private static final String name = getName();

где getName () является статической функцией, которая получает Вас имя.

1
ответ дан 6 December 2019 в 04:54
поделиться

В этом случае Вы могли бы также сделать это статичным, также. И конвенция Java состоит в том, чтобы назвать такие константы в ALL_CAPS.

1
ответ дан 6 December 2019 в 04:54
поделиться

Я не могу использовать его в конструкторе, в то время как Java сначала выполняет конструктора затем поля...

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

public class A {
    protected int member = 1;
    public A() {
        System.out.println(member);
    }
}

Финал ключевого слова просто отмечает постоянного участника, его рассматривают как любого другого участника иначе.

Править: Вы пытаетесь установить значение в конструкторе? Это не работало бы, так как участник неизменен, если определено как финал.

0
ответ дан 6 December 2019 в 04:54
поделиться
Другие вопросы по тегам:

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