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

如何将不兼容类型的对象流到列表中?

羊舌旭尧
2023-03-14

我的问题是:给出一份人员名单,把所有学生都退回来。

以下是我的类:

Person类

public class Person {
}

学生班级

public class Student extends Person {
}

方法

public static List<Student> findStudents(List<Person> list) {


    return list.stream()
            .filter(person -> person instanceof Student)
            .collect(Collectors.toList());
}

我收到一个编译错误:不兼容的类型:推断变量T有不兼容的界限

如何使用stream返回列表中的所有学生而不出现此错误。

共有1个答案

夏雅志
2023-03-14
return list.stream()
           .filter(Student.class::isInstance)
           .map(Student.class::cast)
           .collect(Collectors.toList());

它应该是一个强制转换,否则,它仍然是一个instanceof检查不执行任何强制转换。

Student.class::isinstanceStudent.class::cast只是我的首选项,您可以分别使用p->pinstanceofstudentp->(Student)p

 类似资料:
  • 我正在尝试创建一个查找器,它需要几个谓词并减少它们:

  • 我试图通过在一个单独的线程上进行工作并返回所需的对象来更改JavaFX中的GUI。然而,在完成工作和任务之后。setOnSucceeded()在尝试检索创建的对象时被触发,并出现错误“不兼容类型:对象无法转换为VideoScrollPane类型”。 我认为这与原始类型有关,因为这是在听众中发生的,但环顾四周后,我找不到我想要的建议。 任何可以散发的光芒都将不胜感激。

  • 问题内容: 我试图通过在单独的线程上进行工作并返回所需的对象来对JavaFX中的GUI进行更改。但是,在完成工作和task.setOnSucceeded()之后,我尝试检索创建的对象并得到错误“不兼容的类型:对象无法转换为VideoScrollPane类型”。 我认为这与原始类型有关,因为它发生在侦听器中,但是四处查看后,我找不到我想要的建议。 任何可以散发出的光将不胜感激。 问题答案: 这是因为

  • 我正在学习java,我写了这个程序,它在我的大学电脑上编译成功,但在我的家庭电脑上没有编译。有谁能帮助我吗?

  • 我正在努力找出导致这个问题的原因。我对Java和BlueJ完全陌生,但我已经研究了几个小时,无法找出问题的原因。不断收到错误消息“不兼容类型:泥水匠无法转换为学徒”。非常感谢您的帮助。 //程序的目的:创建一个混合阵列,以容纳两个不同的学徒对象——泥水匠和木匠//泥水匠和木匠//然后将每个对象的所有细节显示在屏幕上。 学徒班就是这样的

  • 问题内容: 我没有用以下任何一种方式编译此代码: 在泛型方面,java似乎没有考虑并使用相同的类型。 这是为什么?还有一些不错的出路吗? 有一个具有以下签名的库函数:。对于作为参数传递的简单类型,此方法很好用,但在泛型的情况下,结果未用通配符参数化,从而导致javac抱怨原始类型。我想将结果传播到我的应用程序的其余部分,但是简单的强制转换无法按我期望的那样工作。 编辑:解决方案 感谢您的回答,这就