相关疑难解决方法(0)

如何初始化静态地图?

你会如何Map在Java中初始化静态?

方法一:静态初始化
方法二:实例初始化(匿名子类)还是其他一些方法?

各自的优点和缺点是什么?

这是一个说明两种方法的示例:

import java.util.HashMap;
import java.util.Map;

public class Test {
    private static final Map<Integer, String> myMap = new HashMap<Integer, String>();
    static {
        myMap.put(1, "one");
        myMap.put(2, "two");
    }

    private static final Map<Integer, String> myMap2 = new HashMap<Integer, String>(){
        {
            put(1, "one");
            put(2, "two");
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

java collections dictionary initialization idiomatic

1084
推荐指数
20
解决办法
82万
查看次数

不在声明中的数组初始化语法

我可以写:

AClass[] array = {object1, object2}
Run Code Online (Sandbox Code Playgroud)

我也可以写:

AClass[] array = new AClass[2];
...
array[0] = object1;
array[1] = object2;
Run Code Online (Sandbox Code Playgroud)

但我不能写:

AClass[] array;
...
array = {object1, object2};
Run Code Online (Sandbox Code Playgroud)

为什么这会被Java阻止?

我知道如何解决它,但有时会更简单.

例如:

public void selectedPointsToMove(cpVect coord) {

    if (tab == null) {
        if (arePointsClose(coord, point1, 10)) {
            cpVect[] tempTab = {point1};
            tab = tempTab;
        } else if (arePointsClose(point2, coord, 10)) {
            cpVect[] tempTab = {point2};
            tab = tempTab;
        } else {
            cpVect[] tempTab = {point1,point2};
            tab = tempTab;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这个简单的问题一直困扰着我,因为我学会了如何在Java中使用数组.

java arrays

139
推荐指数
3
解决办法
25万
查看次数

为什么我不能在java中像这样懒惰初始化静态长数组?

private static final long[] reservedFromIps;

static {
    reservedFromIps = {0l, 167772160l, 1681915904l, 
        2130706432l, 2851995648l, 2886729728l, 3221225984l, 3227017984l, 3232235520l, 
        3323068416l, 3325256704l, 3405803776l, 3758096384l, 4026531840l, 4294967295l}; 
}
Run Code Online (Sandbox Code Playgroud)

错误是"表达式的非法启动,而不是声明,;预期"

而以下工作正常:

private static final long[] reservedFromIps = {0l, 167772160l, 1681915904l, 
    2130706432l, 2851995648l, 2886729728l, 3221225984l, 3227017984l, 3232235520l, 
    3323068416l, 3325256704l, 3405803776l, 3758096384l, 4026531840l, 4294967295l}; 
Run Code Online (Sandbox Code Playgroud)

java static-members lazy-initialization

4
推荐指数
1
解决办法
1048
查看次数