我有一个扩展a的类B。a存储一个Item的列表,B存储一个BItem的列表
在“a”中,我有一个使用[?extends AItem]的ArrayList。
我假设这意味着我可以将这个ArrayList用于扩展aItem的任何类型的对象。
import java.util.ArrayList;
class A {
public ArrayList<? extends AItem> items;
}
public class B extends A{
public void add(BItem i) {
this.items.add(i); //compile error here
}
}
//items :
class AItem {}
class BItem extends AItem{}
这里可能不需要使用泛型。在类A
中拥有AItem
类型的列表应该很好(为了最佳实践,我还将声明它为list
类型,而不是ArrayList
):
class A {
public List<AItem> items;
}
class B extends A {
public void add(BItem i) {
this.items.add(i);
}
}
的问题是什么?extends aItem
是指编译器不能保证元素的实际类型是aItem
或bitem
。它可能是另一个子类citem
,在这种情况下,类型安全被破坏。
使用泛型设计类层次结构的另一种方法是,在父类中设置类型参数,并将其设置为扩展类b
中的适当子类(bitem
):
class A<T extends AItem> {
public ArrayList<T> items;
}
class B extends A<BItem>{
public void add(BItem i) {
this.items.add(i);
}
}
注意:“else”语句只是出于测试目的,似乎表明if语句没有正常工作,因为当我测试时,它总是被触发。
当我将Decimal(x)值追加到数组时,我希望只得到数字,但它还包括在元素开头的Decimal()函数调用。 代码: 输出:
问题内容: 我正在尝试创建一个泛型类型的数组。我收到错误消息: 我很困惑。任何线索为什么会这样。 问题答案: 其背后的原因是,您不能创建通用或参数化类型的数组,而只能 创建可验证的 类型(即可以在运行时推断出的类型)。 尽管可以将此类数组类型 声明 为变量或方法参数。这有点不合逻辑,但这就是Java的样子。 Java泛型和集合在第6章中广泛讨论了此问题和相关问题。
我想在表的第二列中追加 。输出应为 我不想使用,因为我需要在我的实际问题中追加嵌套的div。我制作了同样的小示例。JsFiddle
问题内容: 假设我有一个数组,例如: 然后我想将一个元素推/追加到所述数组的末尾,以获得: 我应该使用哪种方法? 那我想在数组的 前面 添加一个元素呢?是否有固定的时间班次? 问题答案: 从 Swift 3/4/5开始 ,操作如下。 向数组末尾添加新元素。 将另一个数组附加到数组的末尾。 向您的数组中插入一个新元素。 将另一个数组的内容插入到数组中。 更多信息可以从第110页开始的“ Swift编
我试图让用户输入日期来存储它,但我似乎无法将其记录下来。 当我试图将创建的对象添加到数组时,问题就来了。 以下是另一个类,以供setDay,setMonth,setyear参考:public class OurDate{private int day;private int month;private int year;