我在Java8中遇到了一个问题,在使用cast时,它不允许我收集对象。
definitions.stream()
.map(Definition.class::cast)
.map((Definition definition) -> {
WonderfulDefinition wd = new WonderfulDefinition();
wd.name(definition.getName());
//etc
return wd;
}).collect(Collectors.toList())
我得到了编译器错误:
错误:(71,23)java:不兼容类型:推理变量T的边界不兼容等式约束:java。util。列出下限:java。lang.反对
任何帮助都将不胜感激。
更新:
import java.util.*;
import java.util.stream.*;
class Driver {
public static void main(String[] args) {
List definitions = new ArrayList<>();
definitions.add(new Definition());
definitions.add(new Definition());
List<WonderfulDefinition> list =
definitions.stream()
.map(Definition.class::cast)
.map((Definition definition) -> {
WonderfulDefinition wd = new WonderfulDefinition();
wd.name(definition.getName());
//etc
return wd;
}).collect(Collectors.toList());
System.out.println(list);
}
}
class Definition {
private String name;
public String getName() {
return name;
}
public void name(String name) {
this.name = name;
}
}
class WonderfulDefinition extends Definition {
}
问题是你的列表
没有类型。在这种情况下,只需通过执行强制转换来提示编译器:
((List<Object>) definitions).stream()
.map(Definition.class::cast)
.map(definition -> {
WonderfulDefinition wd = new WonderfulDefinition();
wd.name(definition.getName());
//etc
return wd;
}).collect(Collectors.toList());
请记住,这样的说法是完全正确的:
List definitions = Arrays.asList(new Definition());
List<Object> d = definitions;
这里是Java初学者。代码如下: Netbean告诉我这是一个未经检查的强制转换。谷歌告诉我,我应该尽量避免这个警告,而不是压制它,那么我该如何去做呢?这个程序应该读取的唯一文件确实包含一个ArrayList,如果没有,我可以只捕获这些异常。 此外,如果我对char[][](从和OIS中读取并尝试转换)执行相同的操作,netbeans不会有任何问题。为什么会这样?我认为这仍然是一个未经检查的演员阵
我在这里发布了一个答案,其中演示使用< code>ConcurrentMap的< code>putIfAbsent方法的代码如下: 这种方法的主要缺点是您必须创建一个新对象来放入地图中,无论它是否会被使用。如果对象很重,这可能会产生重大影响。 我想到这将是一个使用Lambdas的机会。我还没有下载Java 8 n,或者在它成为官方(公司政策)之前我可以下载,所以我无法测试它,但这样的东西是否有效?
温馨提示:该项目已开源,用户在项目基础上的所有操作、修改须进行标记,并保留原项目版权说明。 羊驼!羊驼!前方惊现羊驼 ! 羊驼! 是一个开源的轻量级树状 CMS 系统。它基于 php + mysql 开发,并使用 b2core 为底层MVC架构。 可以方便快速的配置出个人、企业网站。 如果你是打算开发一个内容网站,或者是开发一款基于PHP的应用,羊驼!CMS 都会是个不错的开始,它可以帮你节省构
所以我有一个技术挑战我需要帮助。 一个大型项目正在使用Quartz调度程序调度一个作业,使其在每晚9点运行。 然而,调度的作业需要从属性文件中读取值,使用自动布线获取一些bean等。 当我使用@autowired和@value注释时,我发现这些值为空。 问题是Quartz在spring容器外部使用创建JobDetail对象。可以在下面的代码中看到。 因此,包装的对象无法使用Spring访问属性文件
问题内容: 有没有办法将石英作为基础调度程序? 我可以想到两件事,但都需要做一些工作: 创建一个将解析注解并注册石英作业的自定义 实施委托石英的工具。 问题是:以上两个选项是否已经编写过,是否还有另一个选项? 问题答案: 我最终制作了自己的弹簧石英“桥”。我打算建议将其作为春季的改进。 首先,我创建了一个新注释,该注释将放置在实现quartz Job接口的类上: (请注意原型作用域-石英假定每个作
谢谢你的帮助!