我已经看过几个向我展示NEW> module-info.java的指南我没有那个module-info.java项目,我目前在这方面已经丢失了.我需要有人帮助我理解我在做什么以及我应该做些什么.
我刚刚安装了IntelliJ,并且是java的新手(在android之外),我不知道如何添加jdk9,或者即使添加是正确的术语.
有没有人知道src.zip在Java 9的位置.对于版本7和8,它是在linux tar中而不是在windows zip中,但是我已经浏览了所有的linux tars而且它不在那里.
假设我有2个模块:
module1有包 package1
module2有package2,package3和package4
我希望package1只package2在module2中可见.不到module2中的任何其他包(package3或package4).
这可能使用module-info.java吗?
我想讨论一个特定集合 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 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 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版本?