小编Dmi*_*kiy的帖子

"检测到所需的基于文件名的自动模块"是什么.警告意味着?

在我的多模块项目中,我module-info.java只创建了几个模块.在编译期间maven-compiler-plugin:3.7.0我得到下一个警告:

[警告]*检测到必需的基于文件名的自动模块.请不要将此项目发布到公共工件库!*

这是什么意思?是因为我只有几个模块,module-info.java而不是整个项目?

java maven-3 maven maven-compiler-plugin java-9

14
推荐指数
2
解决办法
3214
查看次数

如何在 Java 17 中通过反射获取所有记录字段及其值?

我上过一堂课:

class A {
   public final Integer orgId;
}
Run Code Online (Sandbox Code Playgroud)

我将其替换为Java 17中的记录:

record A (Integer orgId) {
}
Run Code Online (Sandbox Code Playgroud)

另外,我有一个通过反射进行验证的代码,该代码适用于常规类,但不适用于记录:

Field[] fields = obj.getClass().getFields(); //getting empty array here for the record
for (Field field : fields) {
}
Run Code Online (Sandbox Code Playgroud)

在 Java 17 中通过反射获取 Record 对象字段及其值的正确方法是什么?

java reflection java-record java-17

13
推荐指数
1
解决办法
7679
查看次数

如何从Java 9模块导出所有包?

现在,对于我拥有的每个模块,我需要明确指定要导出的包.例如:

module core {
    exports cc.blynk.server.core;
    exports cc.blynk.server.core.protocol.handlers.decoders;
    exports cc.blynk.server.core.protocol.handlers.encoders;
}
Run Code Online (Sandbox Code Playgroud)

但是,它不是很方便.我想做那样的事情:

module core {
    exports cc.blynk.server.core.*;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?这种限制来自哪里?

java java-9 java-module

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

为什么我的Oracle JVM为简单的"Hello World"程序创建了所有这些对象?

我一直在玩jmap,发现简单的"Hello World"Java程序创建了数千个对象.以下是Oracle JVM update 131在启动时创建的截断对象列表:

 num     #instances         #bytes  class name
----------------------------------------------
   1:           402        4903520  [I
   2:          1621         158344  [C
   3:           455          52056  java.lang.Class
   4:           194          49728  [B
   5:          1263          30312  java.lang.String
   6:           515          26088  [Ljava.lang.Object;
   7:           115           8280  java.lang.reflect.Field
   8:           258           4128  java.lang.Integer
   9:            94           3760  java.lang.ref.SoftReference
  10:           116           3712  java.util.Hashtable$Entry
  11:           126           3024  java.lang.StringBuilder
  12:             8           3008  java.lang.Thread
  13:            74           2576  [Ljava.lang.String;
  14:            61           1952  java.io.File
  15:            38           1824  sun.util.locale.LocaleObjectCache$CacheEntry
  16:            12           1760  [Ljava.util.Hashtable$Entry;
  17: …
Run Code Online (Sandbox Code Playgroud)

java jvm

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

对于小型数组,为什么Arrays.copyOf比System.arraycopy快2倍?

我最近玩了一些基准测试,发现了非常有趣的结果,我现在无法解释.这是基准:

@BenchmarkMode(Mode.Throughput)
@Fork(1)
@State(Scope.Thread)
@Warmup(iterations = 10, time = 1, batchSize = 1000)
@Measurement(iterations = 10, time = 1, batchSize = 1000)
public class ArrayCopy {

    @Param({"1","5","10","100", "1000"})
    private int size;
    private int[] ar;

    @Setup
    public void setup() {
        ar = new int[size];
        for (int i = 0; i < size; i++) {
            ar[i] = i;
        }
    }

    @Benchmark
    public int[] SystemArrayCopy() {
        final int length = size;
        int[] result = new int[length];
        System.arraycopy(ar, 0, result, 0, length);
        return result; …
Run Code Online (Sandbox Code Playgroud)

java arrays performance microbenchmark

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

为什么 RecordComponent 没有 Java 17 中 Records 类中定义的注释信息?

我摆弄唱片,发现一些对我来说看起来不合逻辑的东西:

记录:

record R(@NotEmpty Integer i) {}
Run Code Online (Sandbox Code Playgroud)

代码:

RecordComponent[] recordComponents = R.class.getRecordComponents();
System.out.println(recordComponents[0].isAnnotationPresent(NotEmpty.class));
//prints false
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做:

System.out.println(R.class.getDeclaredFields()[0].isAnnotationPresent(NotEmpty.class));
//prints true
Run Code Online (Sandbox Code Playgroud)

这是预期的吗?因为RecordComponent implements AnnotatedElement,所以我认为RecordComponent应该有关于注释的信息。我的期望是错误的吗?

java java-record java-17

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

是否有更快的Integer.toString(myInt).getBytes(US_ASCII)替代方法?

用户给我带来byte / short / int / long价值。我必须将其作为POST HTTP请求的一部分发送,并且必须将数字作为字符串发送。

所以现在我做下一个:

//simplified version
byte[] data = Integer.toString(myInt).getBytes(US_ASCII);
sendPost(data);
Run Code Online (Sandbox Code Playgroud)

我正在寻找更快的替代品

Integer.toString(myInt).getBytes(US_ASCII);
Run Code Online (Sandbox Code Playgroud)

由于这种流动产生char[]Stringbyte[]对象。虽然我只需要byte[]。我想知道是否还有其他更快/更好的选择。

java

6
推荐指数
1
解决办法
126
查看次数

为什么lambda IntStream.anyMatch()比天真的实现慢10?

我最近在分析我的代码并发现了一个有趣的瓶颈.这是基准:

@BenchmarkMode(Mode.Throughput)
@Fork(1)
@State(Scope.Thread)
@Warmup(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS)
public class Contains {

    private int[] ar = new int[] {1,2,3,4,5,6,7};

    private int val = 5;

    @Benchmark
    public boolean naive() {
        return contains(ar, val);
    }

    @Benchmark
    public boolean lambdaArrayStreamContains() {
        return Arrays.stream(ar).anyMatch(i -> i == val);
    }

    @Benchmark
    public boolean lambdaIntStreamContains() {
        return IntStream.of(ar).anyMatch(i -> i == val);
    }

    private static boolean contains(int[] ar, int value) {
        for …
Run Code Online (Sandbox Code Playgroud)

java performance lambda microbenchmark

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

在通过类变量调用时,Java 9中的Class.cast和Class.isInstance方法实际上是内在的吗?

我一直在寻找通过Java的9个新特性的方法和发现,现在的方法Class.cast 是内在的与太一起Class.isInstance.

我做了简单的基准来检查:

@BenchmarkMode(Mode.Throughput)
@Fork(1)
@State(Scope.Thread)
@Warmup(iterations = 10, time = 1, batchSize = 1000)
@Measurement(iterations = 20, time = 1, batchSize = 1000)
public class Casting {

    public Object msg;
    public Class<String> type;

    @Setup
    public void setup(BenchmarkParams params) {
        type = String.class;
        msg = "123";
    }

    @Benchmark
    public boolean isInstanceMethod() {
        return type.isInstance(msg);
    }

    @Benchmark
    public boolean isInstanceMethodExplicit() {
        return String.class.isInstance(msg);
    }

    @Benchmark
    public boolean isInstanceRegular() {
        return msg instanceof String;
    }

    @Benchmark
    public String …
Run Code Online (Sandbox Code Playgroud)

java performance microbenchmark java-9

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