Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java数组更改内容_Java_Arrays_Refactoring - Fatal编程技术网

Java数组更改内容

Java数组更改内容,java,arrays,refactoring,Java,Arrays,Refactoring,目前我使用的代码片段如下: private void updateWidth() { rowWidth=new int[]{ font.getWidth(MainClass.getMain().lang().getString("start"), 120)+20, font.getWidth(MainClass.getMain().lang().getString("name")+": "+name+"I", 120)+20,

目前我使用的代码片段如下:

private void updateWidth() {
    rowWidth=new int[]{
            font.getWidth(MainClass.getMain().lang().getString("start"), 120)+20,
            font.getWidth(MainClass.getMain().lang().getString("name")+": "+name+"I", 120)+20,
            font.getWidth(MainClass.getMain().lang().getString("currentHigh"), 120)+20,
            font.getWidth(MainClass.getMain().lang().getString("back"), 120)+20
    };

}
但就个人而言,我真的不喜欢第2排。我总是在更新值时创建一个新对象。
这真的可以吗,还是我缺少了一些明显的解决方案?

创建一个表示密钥的临时对象是可以的,假设不能静态构造同一个密钥(例如,因为
名称
来自某种配置信息)

通过创建一个实用程序方法来封装一些逻辑,可以稍微减少声明:

private static int getWidth(String key) {
    return font.getWidth(MainClass.getMain().lang().getString(key), 120)+20;
}
现在可以按如下方式初始化阵列:

rowWidth=new int[]{
    getWidth("start")
,   getWidth("name" + ": " + name + "I")
,   getWidth("currentHigh")
,   getWidth("back")
};

假设不能静态构造同一个键(例如,因为
name
来自某种配置信息),则创建表示该键的临时对象是可以的

通过创建一个实用程序方法来封装一些逻辑,可以稍微减少声明:

private static int getWidth(String key) {
    return font.getWidth(MainClass.getMain().lang().getString(key), 120)+20;
}
现在可以按如下方式初始化阵列:

rowWidth=new int[]{
    getWidth("start")
,   getWidth("name" + ": " + name + "I")
,   getWidth("currentHigh")
,   getWidth("back")
};

您的代码中有大量违反的重复代码,可以在java-8中重构为:

int[] rowWidth = Stream.of("start","name" + ": " + name + "I","currentHigh","back")
                       .mapToInt(key - > font.getWidth(MainClass.getMain().lang()
                                                      .getString(key) ,120) + 20)
                       .toArray();

您的代码中有大量违反的重复代码,可以在java-8中重构为:

int[] rowWidth = Stream.of("start","name" + ": " + name + "I","currentHigh","back")
                       .mapToInt(key - > font.getWidth(MainClass.getMain().lang()
                                                      .getString(key) ,120) + 20)
                       .toArray();

如果
rowWidth
始终为长度
4
,则可以简单地覆盖以下条目:
rowWidth[0]=。。。;rowWith[1]=。。。;rowWith[2]=。。。;rowWith[3]=
如果
rowWidth
的长度始终为
4
,则可以简单地覆盖以下条目:
rowWidth[0]=。。。;rowWith[1]=。。。;rowWith[2]=。。。;rowWith[3]=