如果这个问题很愚蠢,我很抱歉,但我很难理解Object []的用法。我想知道下面的方法真正返回了什么。因为它被包裹为一个物体。为什么我要问这个,因为我想用其他方法替换这个方法与其他模块集成。
我理解它会返回值对象列表?但是这个Object []究竟意味着什么?
非常感谢你。
public Object[] generateNewGreedySolution(int startingPoint) {
if (startingPoint == -1) {
startingPoint = new Random().nextInt(ins.getDimension() + 1);
}
//Solution s = new Solution(problem);
Object[] values = new Object[ins.getDimension()];
List<Integer> cities = new ArrayList<Integer>();
for (int i = 0; i < ins.getDimension(); i++) {
if ((i + 1) != startingPoint) {
cities.add(i + 1);
}
}
values[0] = startingPoint;
for (int i = 1; i < values.length; i++) {
double minCost = -1;
int index = -1;
for (int j = 0; j < cities.size(); j++) {
double distance = ins.getDistance(startingPoint, cities.get(j));
if (distance < minCost || minCost == -1) {
minCost = distance;
index = j;
}
}
values[i] = cities.get(index);
startingPoint = cities.get(index);
cities.remove(index);
}
return values;
}
答案 0 :(得分:1)
Class Object是类层次结构的根。每个类都有Object作为超类。所有对象(包括数组)都实现此类的方法。
来自:http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html
这意味着您可以使用类型Object
的数组来返回几乎每个类对象的集合。例如,您可以将索引为0的对象设为Integer
,另一个为String
。
但是因为&#34;只有&#34;所有类都是继承的,你需要注意原语不是。我的意思是,例如int
(原始)和java.lang.Integer
之间存在差异(从Object
继承并且具有int
成员变量,但也可以指向null
)。
答案 1 :(得分:-1)
您的generateNewGreedySolution
方法返回Object
类型
在第5行你正在做
Object[] values = new Object[ins.getDimension()];
所以这里的值是一个对象数组,因此你正在回归它。
如果您对方法中返回的内容感到困惑,那么请注意,如果您的方法签名是int,那么您应该返回int,如果您的方法签名是String,那么您应该返回String。
这里你的方法返回类型是Object [],所以你要返回值