我在另一篇文章中询问了一个类似的问题(如何从不需要强制转换的派生类实现一个方法),但这更具体一些.假设我有3个类:车辆,汽车,敞篷车.汽车延伸车辆,敞篷车延伸汽车.我想为每个类返回一个方法,该方法返回一个不需要在运行时强制转换的列表.经过一番思考后我认为这是不可能的,但我也想听听你的意见
public class Vehicle {
public List<? extends Vehicle> getList() {
return new ArrayList<Vehicle>();
}
}
public class Car extends Vehicle {
@Override
public List<? extends Car> getList() {
return new ArrayList<Car>();
}
}
public class Convertible extends Car {
@Override
public List<? extends Convertible> getList() {
return new ArrayList<Convertible>();
}
}
Run Code Online (Sandbox Code Playgroud)
为了不使用强制转换,我必须在list(List<Convertible>)中返回特定类型的元素,但如果我想扩展Convertible类,我就不能再这样做了.
这种情况有什么办法吗?
我有一个图像,它可能会根据某些操作和我想要position在img标签上的几个 div 改变其位置。
简化后的代码如下:
<div>
<img src="someRandomImageUrl">
<div>foobar</div>
</div>
Run Code Online (Sandbox Code Playgroud)
为了更好地理解,想象一下我有一个在中心周围有一个小方块的图像,并且无论我将图像放在哪里,我都希望将 foobar 消息放置在图像方块中。有任何想法吗?
我正在从leetcode解决Path Sum问题,我不理解return语句的行为.我有一个有2个节点的树.根节点的值为1,其左子节点的值为2.
如果2个节点的总和为3,我必须返回true,显然它是,但不管怎样,程序继续运行,即使它达到返回true.
public class Solution {
public boolean hasPathSum(TreeNode root, int sum) {
if (root != null) return hasPathSumRec(root, 0, sum);
else return false;
}
public boolean hasPathSumRec(TreeNode node, int currentSum, int sum) {
if (isLeaf(node) && sum == currentSum + node.val) {
return true;
} else {
if (node.left != null) {
hasPathSumRec(node.left, currentSum + node.val, sum);
}
if (node.right != null) {
hasPathSumRec(node.right, currentSum + node.val, sum);
}
}
return false;
}
public boolean isLeaf(TreeNode node) { …Run Code Online (Sandbox Code Playgroud)