当前位置: 首页 > 知识库问答 >
问题:

迭代[duplicate]时对象上缺少方法

景翰音
2023-03-14

创建类的两个实例

将它们存储在集合中(本例中为ArrayList)

迭代调用类上的方法的集合

public interface MyInterface {
     void sayHello();
}
public class Person implements MyInterface{
    private String name;

    public Person(String nameValue) {
        name = nameValue;
    }

    @Override
    public void sayHello() {
        System.out.println(name);
    }
}
public class DemoApplication {

    public static void main(String[] args) {
        ArrayList<MyInterface> personHolder = new ArrayList();
        MyInterface me = new Person("Myself");
        MyInterface daughter = new Person("Daughter");
        personHolder.add(me);
        personHolder.add(daughter);

        greeter(personHolder);

    }

    static void greeter(ArrayList persons){

        persons.forEach((person -> {

        }));        
    }
}
person.sayHello()
((Person) person).sayHello();

共有1个答案

锺离声
2023-03-14

更改Greeter函数并添加通用的MyInterface:

static void greeter(ArrayList<MyInterface> persons) {
...
}

否则,Java不会对存储在数组列表中的内容一无所知,并认为它是一个对象(因为所有东西都是对象)。很明显,对象没有sayhello方法,这就是您必须进行强制转换的原因。

另一件事,更多的是一种代码样式--只是一个建议:

 类似资料:
  • 现在,这段代码运行良好,该项从p对象和jlist中都被删除,但它在it.next()行抛出一个“ConcurrentModificationException”异常。 我怎么解决这个?

  • 问题内容: 前几天,我以为我在jQuery中看到了一个对象迭代器,该对象迭代器具有可以设置为对子对象进行递归迭代的标志。我以为它是jQuery.each()的一部分,但是现在我在文档中看不到该功能。 jQuery中是否有任何此类迭代器可以自动递归? (我知道如何用JavaScript进行操作。只是想知道我是否确实看到了我以为看到的东西。) 非常感谢! 编辑: 要清楚,我在想像jQuery.each

  • 问题内容: 有没有一种方法来获取数组的迭代器?像这样: 问题答案: 您可以使用: 它只是将数组包装在列表实现中,以便您可以在其上调用方法。 请注意,这种方法仅适用于对象数组。对于原始数组,您将必须实现自己的迭代器(例如,使用匿名类)。 从Java 8开始,您还可以使用开箱即用的迭代器(并且如果是或,也可以使此代码进行编译: 尽管您将无法使用原始数据类型,并且因为没有相应的流实现。但是,您可以使用以

  • 问题内容: 我在Mac OS X 10.6.8上的Python 2.7.3中运行以下代码。 并且文件foo包含 输出是 为什么我没有收到短信?我该如何访问? 谢谢 问题答案: 尝试这个: 输出: 该属性将文本保留在元素的结束标记之后。 与其他XML模型(例如DOM)相比,lxml和ElementTree具有特殊性。有关更多信息,请参见http://infohost.nmt.edu/tcc/help

  • } 当我运行这段代码时,我得到以下错误: 我该怎么做来解决这个问题呢? 见下面的条件:给定一个从1到4(含)的数字,返回该数字的一个单词表示。例如,给定2,返回2。如果数字大于4,则返回短语“太大”。如果数字小于1,则返回短语too small。

  • 问题内容: 我正在尝试遍历: …并提取中的每个元素。这是我的方法: 这里的问题是对的每次调用都会从中删除元素,从而修改其大小,从而导致以下错误: 那么…当元素动态变化时,我该如何遍历其中的元素呢? 问题答案: 其他人则提到了正确的解决方案,而没有实际阐明。所以这里是: 另外,如果您想安全地在assign函数中更改映射,则需要传入迭代器(只能使用remove函数,并且只能使用一次)或条目来更改值。