gpt4 book ai didi

java - 在不知道java中的对象类型的情况下应用方法

转载 作者:行者123 更新时间:2023-12-01 07:01:42 25 4
gpt4 key购买 nike

我在 java 中有两个类:Movie 和 Book(这是一个简化的示例):

书籍可以有作者:

    public class Book {

public String author;

public Book(String a) {
this.author = a;
}

public String getAuthor(){
return author;
}

}

电影可以有标题:

    public class Movie {

public String title;

public Movie(String t) {
this.title = t;
}

public String getAuthor(){
return title;
}

}

我试图将所有对象放入这样的列表中:

    ArrayList myList = new ArrayList();

Book book = new Book("William");
Movie movie = new Movie("Titanic");


myList.add(book);
myList.add(movie);

然后我想计算我有多少本约翰写的书(或任何其他特定书名)。但是我无法应用 getAuthor() 或 getTitle() 方法,因为 java 不知道它是什么类型的对象

    int counter = 0;
for (int i =0;i<myList.size();i++){
if (myList.get(i).getAuthor().equals("John") ){
counter +=1;
}

我可以使用 if 子句,每次检查对象类型,并对不同对象应用不同的方法,但这是不可行的,因为在现实生活中我有 20 多个类,它会生成代码非常长且可维护。

有人可以为此提出解决方案吗?提前致谢!

最佳答案

创建界面

public interface HasAuthor {
String getAuthor();
}

在您的两个类中实现此接口(interface)并使用它:

List<HasAuthor> list = new ArrayList<>();
list.add(new Book());
list.add(new Movie());

long count = list.stream().filter(smth -> "John".equals(smth.getAuthor())).count();

关于java - 在不知道java中的对象类型的情况下应用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44826809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com