我有一个问题:我在Eclipse环境下工作。
有时候电脑不能进行以下转换:
但仅限于这种转换:
我理解为什么可以在Object和Integer之间进行转换,但是为什么有时候可以将基本变量进行强制类型转换,而有时候又不能呢?
谢谢。
我附上了一段代码,编译器不允许我将int变量转换为对象:
有时候电脑不能进行以下转换:
int a ...
Object ans = (int) a;
但仅限于这种转换:
int a ...
Object ans = (Integer) a;
我理解为什么可以在Object和Integer之间进行转换,但是为什么有时候可以将基本变量进行强制类型转换,而有时候又不能呢?
谢谢。
我附上了一段代码,编译器不允许我将int变量转换为对象:
/** @return minimum element */
public Object minimum(){
return minimum(this.root);
}
public Object minimum(BSTNode node){
if (node.left != null) return minimum(node.left);
return node.data;
}
/** @return maximum element */
public Object maximum(){
return maximum(this.root);
}
public Object maximum(BSTNode node){
if (node.right != null) return maximum(node.right);
return node.data;
}
public Object findNearestSmall(Object elem) {
int diff;
diff = (int)maximum() - (int)minimum();
if (compare(minimum(), elem) == 0) return elem;
else return findNearestSmall(elem, this.root, diff);
}
public Object findNearestSmall(Object elem, BSTNode node, int mindiff){
if(node == null) return (int)elem - mindiff;
int diff = (int)elem - (int)node.data;
if(diff > 0 && mindiff > diff) mindiff = diff;
/* Case 2 : Look for in left subtree */
if(compare(node.data, elem)>-1)
return findNearestSmall(elem, node.left, mindiff);
else
/* Case 3 : Look for in right subtree */
return findNearestSmall(elem, node.right, mindiff);
}