Я изучаю визуально, так что вот визуальное представление порядка, как SSCCE:
public class Example {
static {
step(1);
}
public static int step_1 = step(2);
public int step_6 = step(6);
public Example() {
step(8);
}
{
step(7);
}
// Just for demonstration purposes:
public static int step(int step) {
System.out.println("Step " + step);
return step;
}
}
public class ExampleSubclass extends Example {
{
step(9);
}
public static int step_3 = step(3);
public int step_10 = step(10);
static {
step(4);
}
public ExampleSubclass() {
step(11);
}
public static void main(String[] args) {
step(5);
new ExampleSubclass();
step(12);
}
}
Это печатает:
Step 1
Step 2
Step 3
Step 4
Step 5
Step 6
Step 7
Step 8
Step 9
Step 10
Step 11
Step 12
Имейте в виду, что порядок static
детали; обратите внимание на разницу между порядком Example
's static
и ExampleSubclass
.
Также обратите внимание, что блок инициализации экземпляра всегда выполняется перед конструктором независимо от порядка , Однако порядок имеет значение между блоком инициализации и инициализатором поля.
Если вы хотите, чтобы он больше не учитывал регистр, просто сделайте:
if(responseObject[message.content.toLowerCase()]) {
message.reply(responseObject[message.content.toLowerCase()]);
}