private static final long[] reservedFromIps;
static {
reservedFromIps = {0l, 167772160l, 1681915904l,
2130706432l, 2851995648l, 2886729728l, 3221225984l, 3227017984l, 3232235520l,
3323068416l, 3325256704l, 3405803776l, 3758096384l, 4026531840l, 4294967295l};
}
The error is "illegal start of an expression, not a statement, ; expected"
whereas the following works fine :
private static final long[] reservedFromIps = {0l, 167772160l, 1681915904l,
2130706432l, 2851995648l, 2886729728l, 3221225984l, 3227017984l, 3232235520l,
3323068416l, 3325256704l, 3405803776l, 3758096384l, 4026531840l, 4294967295l};
This has nothing to do with static
blocks, array constants can only be used in initializers. It's just how the language is specified.
This code wont compile either:
public class Test {
public static void main(String[] args) {
long[] reservedFromIps;
reservedFromIps = {0l, 167772160l, 1681915904l,
2130706432l, 2851995648l, 2886729728l, 3221225984l, 3227017984l, 3232235520l,
3323068416l, 3325256704l, 3405803776l, 3758096384l, 4026531840l, 4294967295l};
}
}
Why this is the case is probably a question of added complexity for the compiler with little added gain, but to be entirely sure you would have to take it up with the Java design team.
Firstly there's a typo in your static initializer block (or in your field declaration). Secondly you'll have to do this:
static {
reservedFromIps = new long[]{0l, 167772160l, 1681915904l,
2130706432l, 2851995648l, 2886729728l, 3221225984l, 3227017984l, 3232235520l,
3323068416l, 3325256704l, 3405803776l, 3758096384l, 4026531840l, 4294967295l};
}
Array constants can only be used in initializers, and not when reassigning an array.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With