我的问题是:给出一份人员名单,把所有学生都退回来。
以下是我的类:
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返回列表中的所有学生而不出现此错误。
return list.stream()
.filter(Student.class::isInstance)
.map(Student.class::cast)
.collect(Collectors.toList());
它应该是一个强制转换,否则,它仍然是一个流
。instanceof
检查不执行任何强制转换。
Student.class::isinstance
和Student.class::cast
只是我的首选项,您可以分别使用p->pinstanceofstudent
和p->(Student)p
。
我正在尝试创建一个查找器,它需要几个谓词并减少它们:
我试图通过在一个单独的线程上进行工作并返回所需的对象来更改JavaFX中的GUI。然而,在完成工作和任务之后。setOnSucceeded()在尝试检索创建的对象时被触发,并出现错误“不兼容类型:对象无法转换为VideoScrollPane类型”。 我认为这与原始类型有关,因为这是在听众中发生的,但环顾四周后,我找不到我想要的建议。 任何可以散发的光芒都将不胜感激。
问题内容: 我试图通过在单独的线程上进行工作并返回所需的对象来对JavaFX中的GUI进行更改。但是,在完成工作和task.setOnSucceeded()之后,我尝试检索创建的对象并得到错误“不兼容的类型:对象无法转换为VideoScrollPane类型”。 我认为这与原始类型有关,因为它发生在侦听器中,但是四处查看后,我找不到我想要的建议。 任何可以散发出的光将不胜感激。 问题答案: 这是因为
我正在学习java,我写了这个程序,它在我的大学电脑上编译成功,但在我的家庭电脑上没有编译。有谁能帮助我吗?
我正在努力找出导致这个问题的原因。我对Java和BlueJ完全陌生,但我已经研究了几个小时,无法找出问题的原因。不断收到错误消息“不兼容类型:泥水匠无法转换为学徒”。非常感谢您的帮助。 //程序的目的:创建一个混合阵列,以容纳两个不同的学徒对象——泥水匠和木匠//泥水匠和木匠//然后将每个对象的所有细节显示在屏幕上。 学徒班就是这样的
问题内容: 我没有用以下任何一种方式编译此代码: 在泛型方面,java似乎没有考虑并使用相同的类型。 这是为什么?还有一些不错的出路吗? 有一个具有以下签名的库函数:。对于作为参数传递的简单类型,此方法很好用,但在泛型的情况下,结果未用通配符参数化,从而导致javac抱怨原始类型。我想将结果传播到我的应用程序的其余部分,但是简单的强制转换无法按我期望的那样工作。 编辑:解决方案 感谢您的回答,这就