java - 转换对象的类

标签 java

我以前的 OOP 经验是使用 Objective-C(动态类型),但是,我现在正在学习 Java。我想遍历对象的 ArrayList 并对它们执行某种方法。 ArrayList 中的每个对象都属于同一类。在 Objective-C 中,我会在每次迭代中检查对象是否是正确的类,然后运行该方法,但这种技术在 Java 中是不可能的:

for (Object apple : apples) {
        if (apple.getClass() == Apple.class) {
            apple.doSomething(); //Generates error: cannot find symbol
        }
    }

我如何“告诉”编译器 ArrayList 中的对象属于哪个类?

最佳答案

在 Java 5 及更高版本中,集合类型被泛化了。所以你会有这个:

ArrayList<Apple> a = getAppleList(); // list initializer

for (Apple apple : a) {
    apple.doSomething();
}

拥有 ObjectArrayList 通常不是好的做法,除非您特别需要您的 ArrayList 能够容纳不同类型的对象。通常情况并非如此,您可以使用异构集合来提高类型安全性。

关于java - 转换对象的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2196515/

相关文章:

java - `final` 上的 `class Singleton` 和 `private` 上的 `Singleton()` 是否彼此冗余?

Java 继承 : multiple extends needed

java - 如何在选择时在卡片 View 上添加一个框?

java - 如何用Java机器人定位不同屏幕尺寸上的对象坐标以进行点击?

java - 没有默认区域设置的 MessageFormat 格式

java - 在 android studio/IntelliJ IDEA 中使用标记接口(interface)

java - 从 POST 请求中的正文检索 JSON - Java

java - 使用 Netty 发送 POST 参数,为什么 DefaultHttpDataFactory 不在版本中?

Java——等待方法未退出

java - 从 getName() 的结果中刷新选项卡名称