小编Moh*_*agi的帖子

如何在Java 9中实现String连接?

正如JEP 280中所写:

更改String生成的static -concatenation字节码序列,javac以使用invokedynamic对JDK库函数的调用.这将使未来的String串联优化成为可能,而无需进一步更改所设置的字节码javac.

在这里,我想了解invokedynamic调用的用途以及字节码串联的不同之处是invokedynamic什么?

java string string-concatenation invokedynamic java-9

108
推荐指数
3
解决办法
8315
查看次数

如何编译支持旧版Java的.java?

我想将我的.java(几个)编译成一个.jar与至少Java 1.6和更新,最好Java 1.5和更新版本的Java 兼容的版本.(我有Java 1.7.0_5)

java cross-platform compilation

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

Java 9中的类加载器层次结构

从Java-8开始,我知道类加载器的层次结构如下: -

Bootstrap类加载器 - >扩展类加载器 - >应用程序类加载器

Java 9中类加载器层次结构的变化是什么?它是如何工作的?

java classloader java-9 java-module

13
推荐指数
2
解决办法
4033
查看次数

Java 9集合的便利工厂方法作为集合文字的替代方法

考虑这种方法(仅用于说明):

boolean isSmallNumber(String s) {
    return (n in ["one", "two", "three", "four"]);
}
Run Code Online (Sandbox Code Playgroud)

当然,这不是Java,但它可能是您最喜欢的支持集合文字的替代语言,例如GroovyKotlin.表达式是简洁的,并且,就像字符串文字一样,允许编译器将集合文字放在某个静态存储区域(甚至可能是"intern()"它).

现在输入Java 9:

boolean isSmallNumber(String s) {
    return Set.of("one", "two", "three", "four").contains(s);
}
Run Code Online (Sandbox Code Playgroud)

这也很简洁,但遗憾的是,每次调用它时,它都会在堆上分配一个新的Set,然后立即将其用于垃圾回收.

当然,您可以定义一个集合常量:

private static final Set<String> SMALL_NUMBERS = Set.of(...);
Run Code Online (Sandbox Code Playgroud)

但是,这个定义可能距离大类中的方法定义一千行,并且您可能无法想到一个好的描述性名称,而文字可能更清晰(在这个假设的情况下).

因此,如果我Set.of(...)在方法内部使用,那么每次调用方法时,JIT编译器是否会优化掉新对象的创建?

java collections java-9

10
推荐指数
1
解决办法
199
查看次数

Java 9中是否提供了Ahead-of-Time编译?

根据JEP 295

任何JDK模块,类或用户代码的AOT编译都是实验性的,在JDK 9中不受支持.

要使用AOTed java.base模块,用户必须编译模块并将生成的AOT库复制到JDK安装目录中,或在java命令行中指定它.

我对上面的语句感到困惑,如果JDK 9不支持AOT那么我们如何使用AOT编译模块?

我的第二个问题是,为什么AOT不支持JDK 9,如果它比JIT有许多优势?

java compilation java-9 java-aot

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

如何将mp3音频与文本同步?

阅读所有以前的答案,没有运气.在Android应用程序上工作,我需要将mp3音频与文本同步.随着mp3播放它不断改变文本.就像YouTube上的歌词亮点等.

java mp3 android

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

在微服务中使用会话是错误的吗?

我已经读过,会话违反了RESTfulness的概念.

会话真的违反了R​​ESTfulness吗?

微服务中的会话管理

RESTful身份验证

由于微服务不可避免地使用REST,这同样适用吗?如果是这样,为什么我们有春季会议?它甚至列出了'Spring Session允许在头文件中提供会话ID以使用RESTfulAPI'作为其功能之一.

java spring-security spring-boot spring-session microservices

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

构造链

为什么我们使用这个表格?(这是关于Java的复数视线的课程)

public MathEquation(char opCode)
    {
        this.opCode = opCode;
    }

public MathEquation(char opCode , double leftVal , double rightVal)
    {
        this(opCode);
        this.leftVal = leftVal;
        this.rightVal = rightVal;
    }
Run Code Online (Sandbox Code Playgroud)

为什么不呢?

public MathEquation(char opCode , double leftVal , double rightVal)
    {
        this.opCode = opCode
        this.leftVal = leftVal;
        this.rightVal = rightVal;    
    }
Run Code Online (Sandbox Code Playgroud)

java constructor

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