小编Nam*_*man的帖子

什么是非法反射访问

关于Java 9中的非法反射访问存在很多问题.

现在我找不到的是因为所有谷歌都在努力解决错误信息,实际上是非法的反射访问.

所以我的问题很简单:

什么定义非法反射访问以及什么情况触发警告?

我已经收集到它与Java 9中引入的封装原则有关,但它们如何挂在一起以及什么触发警告在什么情况下我找不到解释.

java java-9 java-module

82
推荐指数
4
解决办法
7万
查看次数

Java 11中的String trim()和strip()方法之间的区别

在其他更改中,JDK 11为java.lang.String类引入了6种新方法:

  • repeat(int)- 重复String的次数与int参数提供的次数相同
  • lines() - 使用Spliterator延迟提供源字符串中的行
  • isBlank() - 指示String是否为空或仅包含空格字符
  • stripLeading() - 从头开始​​删除空白区域
  • stripTrailing() - 从末端移除空白区域
  • strip() - 从字符串的开头和结尾删除空白区域

特别是,strip()看起来非常相似trim().根据这篇文章, strip*()方法旨在:

String.strip(),String.stripLeading()和String.stripTrailing()方法修剪目标字符串的正面,背面或正面和背面的空白[由Character.isWhiteSpace()确定].

String.trim() JavaDoc声明:

/**
  * Returns a string whose value is this string, with any leading and trailing
  * whitespace removed.
  * ...
  */
Run Code Online (Sandbox Code Playgroud)

这几乎与上面的引用相同.

究竟之间的差别String.trim(),并String.strip()因为Java的11?

java string trim strip java-11

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

AssertEquals 2列表忽略顺序

我认为这应该是一个非常简单的问题.但不知何故,我无法在谷歌找到答案.

假设我有2个字符串列表.首先包含"字符串A"和"字符串B",第二个包含"字符串B"和"字符串A"(按顺序通知差异).我想用JUnit测试它们以检查它们是否包含完全相同的字符串.

是否有任何断言检查忽略顺序的字符串的相等性?对于给定的示例org.junit.Assert.assertEquals抛出AssertionError

java.lang.AssertionError: expected:<[String A, String B]> but was:<[String B, String A]>
Run Code Online (Sandbox Code Playgroud)

解决方法是首先对列表进行排序,然后将它们传递给断言.但我希望我的代码尽可能简单和干净.

我使用Hamcrest 1.3,JUnit 4.11,Mockito 1.9.5.

java arrays junit unit-testing assertion

65
推荐指数
5
解决办法
6万
查看次数

DropWizard Metrics Meters与计时器

我学习的DropWizard指标库(原科达硬朗指标),我很困惑,当我应该使用到MetersVS Timers.根据文件:

仪表:仪表测量一组事件发生的速率

和:

计时器:计时器基本上是事件类型持续时间的直方图和其发生率的计量表

基于这些定义,我无法辨别它们之间的区别.令我感到困惑的是,Timer没有像我期望的那样使用它.对我而言,Timer就是这样:一个计时器; 它应该测量a start()和之间的时间差stop().但似乎Timers也可以捕捉事件发生的速度,感觉就像是踩到了Meters脚趾.

如果我能看到每个组件输出的示例,这可能有助于我理解何时/何处使用其中任何一个.

java metrics timer dropwizard codahale-metrics

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

64
推荐指数
3
解决办法
5505
查看次数

RxJava API和Java 9 Flow API之间的区别

在最近几个主要版本的Java的每次迭代中,似乎都有新的方法来管理并发任务.

在Java 9中,我们有Flow API,类似于RxJava的Flowable API,但Java 9有一组更简单的类和接口.

Java 9

Flow.Publisher,Flow.Subscriber,Flow.Processor,Flow.Subscription,和SubmissionPublisher,这就是它.

RxJava

拥有全流API状类,即io.reactivex.flowables,io.reactivex.subscribers,io.reactivex.processors,io.reactivex.observers,和io.reactivex.observables这似乎做同样的事情.

这两个库之间的主要区别是什么?为什么有人会使用Java 9 Flow库而不是更多样化的RxJava库,反之亦然?

java rx-java java-9 rx-java2

62
推荐指数
4
解决办法
1万
查看次数

深刻理解分裂者的特征

为了尝试深入理解java流和分裂器,我对spliterator特性有一些微妙的问题:

Q1:Stream.empty()vsStream.of()(没有args的Stream.of())

  • Stream.empty():SUBSIZED,SIZED
  • Stream.of(): SUBSIZED,IMMUTABLE,SIZED,ORDERED

为什么Stream.empty()没有相同的特征Stream.of()?请注意,与Stream.concat()(特别是没有ORDERED)一起使用时会产生影响.我会说不Stream.empty()应该只有IMMUTABLE和ORDERED,还有DISTINCT和NONNULL.也很有意义Stream.of()仅具有一个参数DISTICT.

Q2:LongStream.of()没有NONNULL

刚注意到NONNULL不可用LongStream.of.不是NONNULL所有LongStreams,IntStreams和DoubleStreams 的主要特征吗?

Q3:LongStream.range(,)vsLongStream.range(,).boxed()

  • LongRange.range(,):SUBSIZED,IMMUTABLE,NONNULL,SIZED,ORDERED,SORTED ,DISTINCT
  • LongStream.range(,).boxed():SUBSIZED,SIZED,ORDERED

为什么.boxed()失去所有这些特征?它不应该失去任何.

我明白.mapToObj()可以失去NONNULL,IMMUTABLE和DISTICT,但.boxed()......没有意义.

Q4:.peek()输掉IMMUTABLE和NONNULL

LongStream.of(1): …

java java-8 java-stream spliterator

57
推荐指数
1
解决办法
1631
查看次数

需求和需要Java 9中的传递语句有什么区别?

需求需要模块声明中的传递模块语句有什么区别?

例如:

module foo {
    requires java.base;
    requires transitive java.compiler;
}
Run Code Online (Sandbox Code Playgroud)

java requires java-9 java-module module-info

54
推荐指数
3
解决办法
6606
查看次数

Maven是否已为JDK9做好准备?

今天我尝试了最新的jdk9 Build 113,并尝试使用最新的Maven 3.3.9 编译我的项目

这些是命令(部分通过twitter发现)

export MVN_OPTS="-Dmaven.compiler.fork -Dmaven.compiler.executable=/somewhere/Downloads/jdk-9/bin/javac"
export JAVA_HOME="/somewhere/Downloads/jdk-9"
mvn clean install
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个错误 ......简而言之:

[WARNING] Error injecting: org.codehaus.plexus.archiver.jar.JarArchiver
java.lang.ExceptionInInitializerError
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.base@9-ea/Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(java.base@9-ea/NativeConstructorAccessorImpl.java:62)

...

at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.<clinit>(AbstractZipArchiver.java:116)
    ... 89 more
[WARNING] Error injecting: org.apache.maven.plugin.jar.JarMojo
java.lang.ExceptionInInitializerError
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.base@9-ea/Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(java.base@9-ea/NativeConstructorAccessorImpl.java:62)

...

at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.<clinit>(AbstractZipArchiver.java:116)
    ... 89 more
Run Code Online (Sandbox Code Playgroud)

什么是正确的maven配置或用于JDK9的参数?

$ mvn --version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T17:41:47+01:00)
Maven home: /home/somewhere/Downloads/maven …
Run Code Online (Sandbox Code Playgroud)

maven-3 maven java-9

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

什么时候抛出"java.io.IOException:Connection reset by peer"?

ERROR GServerHandler  - java.io.IOException: Connection reset by peer
java.io.IOException: Connection reset by peer
        at sun.nio.ch.FileDispatcher.read0(Native Method)
        at sun.nio.ch.SocketDispatcher.read(Unknown Source)
        at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
        at sun.nio.ch.IOUtil.read(Unknown Source)
        at sun.nio.ch.SocketChannelImpl.read(Unknown Source)
        at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:323)
        at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:282)
        at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:202)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

该日志来自使用netty实现的游戏服务器.什么可以导致这个例外?

java tcp ioexception netty

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