小编Nol*_*uen的帖子

Gradle从哪个版本开始支持Java 17

当尝试配置项目时,我收到错误:

不支持 Java。您的构建当前配置为使用 Java 17.0.1 和 Gradle 7.0。

不幸的是,目前官方文档中没有任何信息。

java gradle java-17

21
推荐指数
2
解决办法
6万
查看次数

Gradle 从哪个版本开始支持 Java 21?

当尝试使用 Java 21 配置项目时,我收到错误:

不支持 Java。您的构建当前配置为使用 Java 21 和 Gradle 8.3。

不幸的是,目前官方文档中没有信息:https ://docs.gradle.org/current/userguide/compatibility.html

执行 Gradle 需要 8 到 20 之间的 Java 版本。尚不支持 Java 21 及更高版本。

Gradle 从哪个版本开始支持 Java 21?

java gradle java-21

21
推荐指数
2
解决办法
2万
查看次数

完整的JVM选项列表

除了官方文档,我发现只有这篇文章.但它相当陈旧且不完整(仅提供-XX选项).例如,我找不到-XX:AutoBoxCacheMax任何选项.

如果存在完整列表,可以在哪里找到?

java openjdk jvm jvm-hotspot

18
推荐指数
1
解决办法
2万
查看次数

有没有一种方法可以检查Stream是否包含所有集合元素?

例如,我需要类似的东西:

Collection<String> collection = /* ... */;
Stream<Object> stream = /* ... */;
boolean containsAll = stream.map(Object::toString).containsAll(collection);
Run Code Online (Sandbox Code Playgroud)

当然,我可以Collection使用collect()方法和调用将流的所有元素累积到另一个元素中Collection.containsAll(),但是如果流太大并且处理所有元素的效率低下怎么办?

java collections contains java-8 java-stream

6
推荐指数
1
解决办法
149
查看次数

Gradle构建会忽略Jetbrains注释

假设我们有以下测试代码:

import org.jetbrains.annotations.NotNull;
import org.junit.Test;

public class NullTest {

  @Test
  public void testNull() {
    doNothing(null);
  }

  private @NotNull String doNothing(@NotNull String value) {
    return value;
  }
}
Run Code Online (Sandbox Code Playgroud)

gradle test直接运行或IDEA将操作委托给gradle 时,测试将通过。但是,IllegalArgumentException: Argument for @NotNull parameter 'value' must not be null如果它使用IDEA运行程序(未委托给gradle)运行,则将异常失败。

问题是:如何使通过gradle运行它的测试失败?

java intellij-idea gradle

5
推荐指数
2
解决办法
883
查看次数

如何在 Gradle 中从 Kotlin 获取 Groovy DSL 提供的值

假设以下配置:

build.dependencies.gradle:

ext {
  libraries = [:]
}

libraries += [
  library : [group: 'com.example', name: 'library', version: '1.1.1']
]
Run Code Online (Sandbox Code Playgroud)

build.gradle.kts:

apply(from = "build.dependencies.gradle")

dependencies {
  implementation(libraries["library"]) // does not work
}
Run Code Online (Sandbox Code Playgroud)

有没有办法获取 Groovy 脚本提供的值build.gradle.kts

groovy gradle kotlin build.gradle gradle-kotlin-dsl

5
推荐指数
1
解决办法
523
查看次数

Jackson Serialization:使用展开集合元素

有没有办法序列化集合及其展开的元素?

例如,我想序列化 unwrapped all components

class Model {

  @JsonProperty
  @JsonUnwrapped
  Collection<Object> components;

  Model(Collection<Object> components) {
    this.components = components;
  }

  static class Component1 {
    @JsonProperty
    String stringValue;

    Component1(String stringValue) {
      this.stringValue= stringValue;
    }
  }

  static class Component2 {
    @JsonProperty
    int intValue;

    Component2(int intValue) {
      this.intValue= intValue;
    }
  }

  public static void main(String[] args) throws JsonProcessingException {
    Model model = new Model(Arrays.asList(new Component1("something"), new Component2(42)));
    String json = new ObjectMapper().writeValueAsString(model);
    System.out.println(json);
  }
}
Run Code Online (Sandbox Code Playgroud)

预期的:

{"stringValue":"something","intValue":42}

但实际结果是:

{"components":[{"stringValue":"something"},{"intValue":42}]}

java serialization json jackson

5
推荐指数
1
解决办法
973
查看次数

为什么Java在使用List.toArray时向数组插入null

代码片段的输出

List<Integer> list = List.of(10, 20, 30, 40, 50);
Integer[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
list.toArray(array);
System.out.println(Arrays.toString(array));
Run Code Online (Sandbox Code Playgroud)

是:

[10, 20, 30, 40, 50, 空, 7, 8, 9, 0]

我在方法中找到了以下代码ArrayList.toArray

if (a.length > size)
    a[size] = null;
Run Code Online (Sandbox Code Playgroud)

这种行为的原因是什么?为什么示例中的第五个元素是null,但不是6

java arrays null list arraylist

5
推荐指数
1
解决办法
429
查看次数

Map.computeIfAbsent 要求 Kotlin 中结果不为空

代码片段

val map = mutableMapOf<String, String>()
map.computeIfAbsent(key) { calcValue(it) }
Run Code Online (Sandbox Code Playgroud)

calcValue签名:

fun calcValue(key: String): String?
Run Code Online (Sandbox Code Playgroud)

编译时出现错误:

类型不匹配:推断类型是 String?但预期是字符串

mappingFunction但回国还是可以接受nullMap.computeIfAbsent

这是一个错误吗?或者我做错了什么?

null dictionary kotlin

3
推荐指数
1
解决办法
2555
查看次数