Java - 使用动态名称变体

时间:2016-02-17 15:45:21

标签: java class dynamic-programming static-methods

我有一段时间没遇到这个问题,直到现在才设法避免这个问题。基本上我有一个课程,用于存储返回此信息的吸气剂,用于存储高尔夫球场每个洞的信息。在另一个类中,当用户从第1洞移动到第2洞(当前存储为整数)时,我希望访问第2洞的getter方法,但是无法弄清楚如何完成。

代码:

课程信息课:

//Hole information
private static String[] hole1 = {"name", "Distance", "Par"};
private static String[] hole2 = {"name", "Distance", "Par"};

public static String[] getHole1(){
    return hole1;
}

public static String[] getHole2(){
    return hole2;
}

主类:

String[] holeInfo;
int currentHole = 1;

//How I call hole1 info just now
//I just access the elements of the array as needed then
holeCoOrds = course.getHole1();

//User starts next hole (this will be the case for all 18 holes)
currentHole++ 

//Call next hole information getter method here
//Something along the lines of;
holeCoOrds = course.getHole(currentHole)();

任何帮助都会受到赞赏,我现在已经绞尽脑汁一段时间没有成功。

提前致谢。

3 个答案:

答案 0 :(得分:2)

你没有最好的方法:

div {
  width: 300px;
  height: 50px;
  border: 1px solid black;
  display: inline-block;
  transition: all .1s ease-in-out;
  background-color: white;
  padding: 0px 5px;
}
div:hover {
  transform: scale(1.2);
  z-index: 1;
}
label {
  position: relative;
}

可以这种方式存储在<div> <label>some random text</label> </div> <div> <label>some random text</label> </div>中:

//Hole information
private static String[] hole1 = {"name", "Distance", "Par"};
private static String[] hole2 = {"name", "Distance", "Par"};

然后,只用一种方法获得洞值:

List<String[]>

如果您希望更好地控制漏洞,请使用private static List<String[]> holes = new ArrayList<String[]>(); private static String[] hole1 = {"name", "Distance", "Par"}; holes.add(hole1); private static String[] hole2 = {"name", "Distance", "Par"}; holes.add(hole2); 添加来识别每个漏洞

public static String[] getHole(int holeNumber){
    return holes.get(holeNumber);
}

然后,只用一种方法获得洞值:

Map

答案 1 :(得分:1)

你可以用反射做到这一点。但是,更好的方法是重新设计你的课程,这样就没有必要了。将所有hole数组放入另一个数组或列表中,然后创建一个getHole(int)方法,从该方法返回一个项目。

所以一个简单的(没有健全性检查)版本看起来像这样:

private static String[] holes = {{"name", "Distance", "Par"},
                                 {"name", "Distance", "Par"}};

public static String[] getHole(int hole){
    return holes[hole];
}

这样可以很容易在将来添加额外的漏洞,让您的代码更灵活,这样您就不需要在编译时知道您想要的漏洞。

答案 2 :(得分:0)

为什么不为Hole实体创建一个类,如下所示:

public class Hole {
 private int holeNo;
 private String name;
 private String dist;
 private String par;

 //getters and setters for above properties
}

因此,当您从主类调用代码时,很容易遍历一组孔(2个或更多)。

您甚至可以在Map中保留Hole对象的所有实例,以便轻松检索。