小编Dav*_*ola的帖子

Java 8嵌套lambdas中断编译器

我对Java 8有一个复杂的问题。

问题

与嵌套的lambda编译器一起崩溃NullPointerException

我知道lambda必须确实是无状态的,在这种情况下,具有状态的代码是Supplier实现,但它们是匿名类而不是lambda。

import java.util.function.Function;
import java.util.function.Supplier;

public class Test {

    public static Function<String, Supplier<String>> A = aVal -> new Supplier<String>() {

        @Override
        public String get() {
            return B.apply(aVal).get();
        }

        private Function<String, Supplier<String>> B = bVal -> new Supplier<String>() {
            @Override
            public String get() {
                return C.apply(bVal).get();
            }

            private Function<String, Supplier<String>> C = cVal -> new Supplier<String>() {
                @Override
                public String get() {
                    return cVal;
                }
            };
        };
    };
}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪

An exception has occurred …
Run Code Online (Sandbox Code Playgroud)

java lambda nested javac

9
推荐指数
1
解决办法
142
查看次数

从Play 2.4.1迁移到2.5.6 - 套接字

我已将我的Pl​​ay Framework版本从2.4.1更新到2.5.6,但现在我遇到了Web套接字管理问题.

我有一个Controller类,其中方法liveUpdate()返回一个WebSocket<String>实例.
在这种方法我用WebSocket.whenReady()Out<String>HashMap<Out<String>, String>哪里,关键是在客户端输出流和值是String包含,因为当我需要发送广播消息我迭代的语言信息HashMap.

现在所有这些都在2.5.6中删除或弃用!
在网上搜索我发现新的实现基于Akka Streams使用Flow该类,但我不知道如何调整我的代码.

  • WebSocket.whenReady() 被替换为 WebSocket.Text.accept()
  • Out<?>通过与阿卡流替换Flow

这是我的代码:

Alarms.java

public class Alarms extends Controller {

    @Inject
    private ActiveAlarms activeAlarms;

    [...]

    public WebSocket liveUpdate() {

        return WebSocket.whenReady((in, out) -> {

            in.onMessage(language ->{
                activeAlarms.register(out, language);
            });

            in.onClose(() -> activeAlarms.unregister(out));
        });
    }

    [...]
}
Run Code Online (Sandbox Code Playgroud)

ActiveAlarms.java

public class ActiveAlarms{

    private HashMap<Out<String>, String> …
Run Code Online (Sandbox Code Playgroud)

java websocket akka playframework akka-stream

7
推荐指数
1
解决办法
200
查看次数

IntelliJ Scala在具有32GB内存的快速CPU上是如此缓慢

我正在使用IntelliJ 2019.1.3 Community Edition。在Scala编译服务器中,JVM maximum heap size: 4096 我的idea.vmoptions:

-Xms4096m
-Xmx6144m
-XX:ReservedCodeCacheSize=2048m
-XX:+UseCompressedOops
-Dfile.encoding=UTF-8
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Xverify:none

-XX:ErrorFile=$USER_HOME/java_error_in_idea_%p.log
-XX:HeapDumpPath=$USER_HOME/java_error_in_idea.hprof
Run Code Online (Sandbox Code Playgroud)

环境

  • IntelliJ IDEA 2019.1.3(社区版)内部版本#IC-191.7479.19,建于2019年5月28日JRE:1.8.0_202-release-1483-b58 x86_64 JVM:JetBrains sro macOS 10.14.5所提供的OpenJDK 64位服务器VM
  • IntelliJ Scala插件v2019.1.8
  • CPU:2.6 GHz Intel Core i7
  • 32 GB 2400 MHz DDR4

内存指示灯显示 2582 used of 6060M

我当前的项目相当大(超过800个文件),而且即使是很小的文件intellij也可以挂起几秒钟,而且检查已经花了很长时间。我可以加快速度吗?

scala intellij-idea

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