我正在使用龙目岛@Data
和@Builder
这样的注释:
@Data
@Builder(toBuilder = true)
class Movie {
// Some other fields here.
private final List<Actor> actors;
}
Run Code Online (Sandbox Code Playgroud)
当我Movie
使用构建器创建一个新的,而不指定任何actor时,我希望Lombok将我的List初始化为Collections.emptyList()
.但这不会发生:
List<Actor> actors = Movie.builder().build().getActors();
System.out.println(actors); // Prints 'null'.
Run Code Online (Sandbox Code Playgroud)
在@Builder
注释的文档中,在Vanilla Java(https://projectlombok.org/features/Builder.html)的代码示例中的第55和56行中,我应该看一下代码示例@Singular
(https: //projectlombok.org/features/Singular-snippet.html).在这里的Vanilla Java示例的第112行,似乎应该将列表初始化为空列表.
我查了一下,如果我用@Singular
以下内容对列表进行注释,确实会发生这种情况:
@Data
@Builder(toBuilder = true)
class Movie {
// Some other fields here.
@Singular
private final List<Actor> actors;
}
List<Actor> actors = Movie.builder().build().getActors();
System.out.println(actors); // Prints '[]'.
Run Code Online (Sandbox Code Playgroud)
这是龙目岛的一个错误,还是我做错了什么?根据文档,似乎应该在两种情况下将列表初始化为空列表(因为@Builder
doc指的是@Singular …
编译时常量的文档列出了属性需要满足的三个要求,以便将其声明为const val
.这些是:
"没有自定义getter"的要求让我相信我不能在常量声明中使用任何函数,但似乎并非如此.这些编译:
const val bitmask = (5 shl 3) + 2
const val aComputedString = "Hello ${0x57.toChar()}orld${((1 shl 5) or 1).toChar()}"
const val comparedInt = 5.compareTo(6)
const val comparedString = "Hello".compareTo("World!")
const val toStringedInt = 5.compareTo(6).toString()
const val charFromString = "Hello World!".get(3)
Run Code Online (Sandbox Code Playgroud)
但是,这些不会编译:
// An extension function on Int.
const val coercedInt = 3.coerceIn(1..5)
// Using operator syntax to call the get-function.
const val charFromString = "Hello World!"[3]
// An immediate type is not …
Run Code Online (Sandbox Code Playgroud) 为什么在 Kotlin 中有多种方法可以做同样的事情,这是有原因的吗?
val viaSequence = items.asSequence()
.filter { it%2 == 0 }
.map { it*2 }
.toList()
println(viaSequence)
val viaIterable = items.asIterable()
.filter { it%2 == 0 }
.map { it*2 }
.toList()
println(viaIterable)
val viaStream = items.stream()
.filter { it%2 == 0 }
.map { it*2 }
.toList()
println(viaStream)
Run Code Online (Sandbox Code Playgroud)
我知道以下代码在每个步骤上都会创建一个列表,这会增加 GC 的负载,因此应该避免:
items.filter { it%2 == 0 }.map { it*2 }
Run Code Online (Sandbox Code Playgroud) 我尝试在 Azure Functions 3.0/3.1 应用程序中获取 HTTP 触发器以返回枚举的字符串表示,但没有任何运气。我已经尝试了 Core 3.0 和 Core 3.1。
鉴于这个类:
public enum TestEnum
{
TestValue
}
public class TestClass
{
public TestEnum Test { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望这个 HTTP 触发器:
[FunctionName("MyHttpTrigger")]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log)
{
return new OkObjectResult(new TestClass { Test = TestEnum.TestValue });
}
Run Code Online (Sandbox Code Playgroud)
返回{ "test": "TestValue" }
。相反,它返回{ "test": 0 }
.
在 .Net Core 2 中,我可以使用[JsonConverter(typeof(StringEnumConverter))]
命名空间装饰枚举Newtonsoft.Json
来实现这一点。这现在不起作用。 …
c# asp.net-core azure-functions asp.net-core-3.0 asp.net-core-3.1
我有2个数组,一个用字符串作为键,另一个用整数作为值.我怎样才能将它们转换为地图?
val keys = arrayOf("butter", "milk", "apples")
val values = arrayOf(5, 10, 42)
val map: Map<String, Int> = ???
Run Code Online (Sandbox Code Playgroud)
编辑:我知道如何在Kotlin中将List转换为Map?,但它没有解决这个问题,因为我有2个列表.
我在这里Globalscope
强烈建议不要使用。
我有一个简单的用例。对于我收到的每条kafka消息(比如说一个ID列表),我必须将其拆分并同时调用rest服务,等待它完成并继续执行其他同步任务。该应用程序中没有其他需要协程的东西。在这种情况下,我可以摆脱它吗?
注意:这不是android应用程序。它只是在服务器端运行的kafka流处理器。这是一个在Kubernetes中运行的临时性,无状态,容器化(Docker)应用程序(如果愿意的话,它支持Buzzword)
我看到里面有一些maven命令-D
。例如:
mvn clean install -Duser=john -Dpw=122345
Run Code Online (Sandbox Code Playgroud)
我在互联网上找不到任何有关它的信息。有人可以向我展示一些关于其含义的官方文档吗?
在Java 8中编写lambdas时,我得到了缺少最终修饰符的checkstyle警告.我在编写普通方法时需要警告,但在lambdas中却没有.
例如,将BigDecimals列表汇总如下:
values.stream().reduce(BigDecimal.ZERO, (a, b) -> a.add(b));
Run Code Online (Sandbox Code Playgroud)
给我以下checkstyle警告:
- Variable 'a' should be declared final.
- Variable 'b' should be declared final.
Run Code Online (Sandbox Code Playgroud)
有没有办法让Checkstyle在写lambdas时忽略它?
在Java中:
for(int j = 0; j < 6 && j < ((int)abc[j] & 0xff); j++) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
我们如何在Kotlin中制作这个循环?
当我得到时,我正在玩Scala REPL error: unbound wildcard type
.我试图声明这个(无用的)函数:
def ignoreParam(n: _) = println("Ignored")
Run Code Online (Sandbox Code Playgroud)
为什么我收到此错误?
是否可以在不引入命名类型变量的情况下声明此函数?如果是这样,怎么样?
kotlin ×5
java ×2
asp.net-core ×1
c# ×1
checkstyle ×1
java-stream ×1
lambda ×1
lombok ×1
maven ×1
scala ×1
sequence ×1
types ×1