标签: java-9

如何将jdk9添加到intellij IDEA?

我已经看过几个向我展示NEW> module-info.java的指南我没有那个module-info.java项目,我目前在这方面已经丢失了.我需要有人帮助我理解我在做什么以及我应该做些什么.

我刚刚安装了IntelliJ,并且是java的新手(在android之外),我不知道如何添加jdk9,或者即使添加是正确的术语.

java intellij-idea java-9

-1
推荐指数
1
解决办法
6338
查看次数

我想知道Java 9 src.zip的位置在哪里

有没有人知道src.zip在Java 9的位置.对于版本7和8,它是在linux tar中而不是在windows zip中,但是我已经浏览了所有的linux tars而且它不在那里.

java java-9

-1
推荐指数
1
解决办法
625
查看次数

带有软件包的Java 9 Modularity

假设我有2个模块:

  • module1有包 package1

  • module2有package2,package3package4

我希望package1package2在module2中可见.不到module2中的任何其他包(package3package4).

这可能使用module-info.java吗?

java modularity module java-9

-1
推荐指数
1
解决办法
63
查看次数

按索引访问 LinkedHashMap 与性能

我想讨论一个特定集合 LinkedHashMap 的一些性能,以满足特定要求,以及 Java 8 或 9 的新特性如何对此有所帮助。

假设我有以下 LinkedHashMap:

private Map<Product, Item> items = new LinkedHashMap<>();
Run Code Online (Sandbox Code Playgroud)

使用默认构造函数意味着此 Map 在迭代时遵循插入顺序。

--EDITED-- 在这里要清楚,我知道 Maps 不是通过索引访问的正确数据结构,碰巧这个类实际上需要两个删除方法,一个是 Product,正确的方法,这是关键,另一个按位置或索引,这并不常见,所以这是我对性能的关注。顺便说一句,这不是我的要求。

我必须通过 index实现removeItem()方法。对于那些不知道的人,LinkedHashMap没有某种map.get(index);可用的方法。

所以我将列出几个解决方案:

解决方案1:

public boolean removeItem(int position) {
    List<Product> orderedList = new ArrayList<>(items.keySet());
    Product key = orderedList.get(position);

    return items.remove(key) != null;
}
Run Code Online (Sandbox Code Playgroud)

解决方案2:

public boolean removeItem(int position) {
    int counter = 0;
    Product key = null; //assuming there's no null keys

    for(Map.Entry<Product, Item> entry: items.entrySet() …
Run Code Online (Sandbox Code Playgroud)

java performance linkedhashmap java-8 java-9

-1
推荐指数
1
解决办法
660
查看次数

在Java 9中删除了哪些类?在Java 9上获取NoClassDefFoundError.Java 8工作

在Java 9中删除了哪些类?

在Java 8上,我的工具正在运行.

在Java 9上我得到:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/JPEGCodec
Run Code Online (Sandbox Code Playgroud)

似乎有些类已被删除.

我在Windows上使用Oracle JDK.

java noclassdeffounderror java-9

-2
推荐指数
1
解决办法
460
查看次数

将Java 9 HttpClient代码升级到Java 11:BodyProcessor和asString()

我有一个代码库(显然)可以在下运行,Java 9但不能在下编译Java 11。它使用jdk.incubator.httpclientAPI并根据答案更改模块信息在大多数情况下都有效,但不仅仅是软件包已更改。

我仍然无法解决的代码如下:

private static JSONObject sendRequest(JSONObject json) throws Exception {
    HttpClient client = HttpClient.newHttpClient();
    HttpRequest httpRequest = HttpRequest.newBuilder(new URI(BASE_URL))
            .header("Accept", "application/json")
            .header("Content-Type", "application/json")
            .timeout(TIMEOUT_DURATION)
            .POST(HttpRequest.BodyProcessor.fromString(json.toString()))
            .build();

    HttpResponse<String> httpResponse = client.send(httpRequest, HttpResponse.BodyHandler.asString());
    String jsonResponse = httpResponse.body();

    return new JSONObject(jsonResponse);
}
Run Code Online (Sandbox Code Playgroud)

编译错误为:

Error:(205, 94) java: cannot find symbol
  symbol:   method asString()
  location: interface java.net.http.HttpResponse.BodyHandler
Error:(202, 34) java: cannot find symbol
  symbol:   variable BodyProcessor
  location: class java.net.http.HttpRequest
Run Code Online (Sandbox Code Playgroud)

如何将代码转换为等效Java 11版本?

java json java-9 java-http-client java-11

-4
推荐指数
1
解决办法
367
查看次数