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]=代码>