- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基本上是标题所说的内容,但有一些详细说明。我有一个带有几个子类的父类(super class)。我需要一个 ArrayList 来保存两种类型的子类,因此需要 SuperClass 类型的 ArrayList。我尝试使用 ArrayList.get(0).getQuantity();
访问 Subclass1 的 getQuantity()
方法(假设索引 0 是 SubClass1 类型)。我收到错误消息:对于 SuperClass 类型,getQuantity 未定义。
当放入父类(super class) ArrayList 时,子类对象是否不保留其属性?如果他们确实保留了他们的属性(property),我该如何访问它们?
最佳答案
对象本身仍然是一个子类
,但是当您将它们从集合中取出时,它只知道父类(super class)
,所以它无法告诉您哪个是哪个。 , 它必须选择公分母。
如果您确切地知道特定索引包含子类
类型的对象,您可以直接转换它:
Subclass myObject = (Subclass) list.get(0);
System.out.println(myObject.getQuantity());
它应该可以工作。
更安全的方法是测试对象是否真的如您所想:
SuperClass myObject = list.get(0);
if ( myObject instanceof Subclass) {
Subclass mySubObject = (Subclass) myObject;
System.out.println(mySubObject.getQuantity());
}
如果对象不是 Subclass
类型,第一个示例将引发异常,第二个示例不会,因为它之前进行了测试以确保。
这里需要明白的是,SuperClass myObject = list.get(0)
并不是对象本身,而是访问内存中对象的引用。把它想象成一个允许你控制你的对象的 Remote ,在这种情况下,它不是一个功能齐全的 Remote ,因为它没有向你展示你的对象可以做的所有事情,所以你可以切换到一个更好的 Remote (如 Subclass myObject = (Subclass) list.get(0)
) 以便能够访问所有功能。
我肯定会推荐 Head First Java book因为它非常详细地介绍了这些东西(我从那里偷了这个远程示例)。
关于java - ArrayList<SuperClass> 中的 SubClass 对象是否保留 SubClass 独有的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20295671/
尝试构建我的 Polymer 2.0 项目,但每次我尝试时,无论预设(es5-bundled、es6-bundled)还是单独的标志,我都会收到以下针对我拥有的一个 mixin 的警告: EdmMac
早上好,这是从 oracle 教程中摘录的,假设我们有 class Shape { /* ... */ } class Circle extends Shape { /* ... */ } class
这可能根本不是悖论,但从新手的角度来看,确实如此。 > Class.superclass => Module > Class.superclass.class => Class > Class.sup
我一直在实例化javascript中的子类,使用 object = new class () 但我注意到有人实例化使用 object.prototype = new class () 问题:有什么区别
编辑:用一个简单的用例创建了一个 repo 来复制问题,并在 API 平台问题队列中创建了一个问题 https://github.com/api-platform/api-platform/issue
我正在试验 Java 泛型。我了解使用 Java 泛型我们可以创建仅处理特定类型的类和方法。这使得能够在编译时检测编程错误。 我的问题听起来很奇怪。为什么使用 E extends Superclass
我有一个项目,涉及创建不同类型的对象,这些对象从父类(super class)继承方法和变量,但是当我尝试更改子类中的变量(更改为通过构造函数输入的值)时,变量保持相同的值它在父类(super cla
当我在线部署一个包含映射父类(super class)实体的 symfony 网站时,我收到以下错误: AnnotationException: [Semantical Error] The anno
我有ForceGaugeViewController类和ForceGaugeController类。我试图使 ForceGaugeController 类成为 ForceGaugeViewContro
我想创建一个 Num 的父类(super class),称为 Linear class Linear a where add :: a -> a -> a instance (Num a) =>
我正在尝试从类中删除父类(super class)。 ODB手册说“NULL将删除它”。但它给了我这个错误: "java.lang.IllegalArgumentException: Supercla
我有一个实体数组列表。实体类有 public void update(int delta, Level level, ArrayList entities){ //do stuff } 实体
问题 大多数情况下,当我重新导入项目到eclipse的时候,我重写的方法都不能被正确格式化,导致这样的错误:> The method must override a superclass method
我正在制作一个解决许多类似问题的程序。 我从一个看起来像(例如)的类开始: class problem { void init(); void solve(); int print_res
我的一些构造函数有问题。两个子类都需要得到相同的类(没有父类(super class)),这就是为什么这些类应该在父类(super class)中初始化: template class Super
我正在使用增强的 for 循环,它看起来像这样: public void addItems (Iterable items) { for (Item item : items) {
我是第一次开发 MATLAB OOP 项目。我的父类将有一个非常大的矩阵, child (很多)需要访问它。如何防止 child 复制数据? 在伪代码中我要求, classdef parent
我正在使用 CommonsWare 的 Android CWAC-Camera 库并尝试将我自己的 UI 用于相机 fragment 。如果这是一个愚蠢的问题,请原谅我。我特别关注这部分的 READM
我正在使用具有以下简单本体的 Protege 4.3(也尝试过 5-beta): Class: Person Class: Man SubClassOf: Person Ind
我正在玩 Scala By Example 开头的 QuickSort 示例并尝试将其调整为通用类型 A ,而不仅仅是 Int s。 到目前为止我的工作是 def sort[A new Y(i, -
我是一名优秀的程序员,十分优秀!