我需要一个ConnectionFactory类型的实例字段。供应商可以做到:
private Supplier<ConnectionFactory> connectionFactorySupplier = () -> {
// code omitted
return null;
};
private ConnectionFactory connectionFactory = connectionFactorySupplier.get();
可以将其缩短为一行,如下所示:
private ConnectionFactory connectionFactory = new Supplier<ConnectionFactory>() {
@Override
public ConnectionFactory get() {
// code omitted
return null;
}
}.get();
有没有办法使用lambda使其更简洁一些?我试过以下内容,但无法编译:
private ConnectionFactory connectionFactory= () -> {
// code omitted
return null;
}.get();
// Compilation failure
// error: lambda expression not expected here
您上一个代码段中的问题是编译器无法猜测
() -> {
// code omitted
return null;
}
是实现Supplier
接口SAM的lambda表达式(似乎您首先错过了表达式的括号,但无论如何)。
您可以做的是强制转换lambda,以告知编译器这实际上Supplier
是您实现的接口的抽象方法:
private ConnectionFactory connectionFactory =
((Supplier<ConnectionFactory>)() -> {
// code omitted
return null;
}).get();
但是,那您将获得什么而不是拥有一个初始化器呢?
private ConnectionFactory connectionFactory;
{
//code omitted
connectionFactory = null;
}
或在构造函数中或使用final方法初始化连接:
private ConnectionFactory connectionFactory = initConnection();
private final ConnectionFactory initConnection() {
//code omitted
return null;
}
问题内容: 我想在单个语句(可能包含多个嵌套语句)中声明一个完全填充的地图字段,如下所示: 匿名初始化程序不会这样做,原因与调用返回新填充映射的函数不会这样做的原因相同:匿名初始化程序需要两个顶级语句:一个用于变量声明,一个用于方法或初始化器。 双花括号(和)惯用语可以工作,但是它创建了一个Extended的新类,而我不喜欢由此表示的开销。 Java 8的lambda也许提供了一种更好的方法来实现
如果String和其他类一样,那么如何使用双引号初始化它?
问题内容: 如果String和其他字符串一样是一个类,如何使用双引号将其初始化? 问题答案: Java的设计者决定保留面向对象语言中的原始类型,而不是将所有内容都变成对象,以提高语言的性能。原语存储在调用堆栈中,这需要较少的存储空间,并且操作成本较低。另一方面,对象存储在程序堆中,这需要复杂的内存管理和更多的存储空间。 出于性能原因,Java的String设计为介于基本体和类之间。 例如 注意:
问题内容: 为了将另一个问题分解为更小的部分,我尝试设置所有TextKit组件。但是,更改初始化方法后,我崩溃了。出于测试目的,我将该项目简化为以下内容: 崩溃时出现异常代码EXC_I386_GPFLT。该代码不是很明确。基本问题似乎归结为我如何初始化。 如果我更换 有了这个 然后就可以了。我究竟做错了什么? 问题答案: 看来,做事的方法是将NSLayoutManager添加到NSTextStor
我有一个非常基本的问题。我需要如何为ArrayList键入parrameters才能在BlueJ中使用代码?我有一个方法如下。
我试图初始化一个< code>constexpr引用,但没有成功。我试过了 但我收到了编译时错误 错误:constexpr变量“z”必须由常量表达式初始化 删除< code>const会导致 错误:将对类型“int”的引用绑定到类型“const int”的值会删除限定符 尽管我感觉< code>constexpr自动暗示变量声明的< code>const。 所以我的问题是: < Li > < co