小编Jor*_*nee的帖子

使用HashMap时,Java 11中的ClassCastException但不是Java 8中的ClassCastException?

请看一下我的代码:

Object longL = 2548214;
Map<String, Object> map = new HashMap<String, Object>(1);
map.put("LongNumber", longL);
List<Map<String, Object>> returnlist = new ArrayList(10);
returnlist.add(map);

List<Object> versionMap1 = new ArrayList(10);
versionMap1.add(returnlist);

List<Map<String, String>> docIdVersionNameMap = new ArrayList<>();
docIdVersionNameMap.addAll((List<Map<String, String>>)versionMap1.get(0));

Map<String, String> versionDoc=docIdVersionNameMap.get(0);

Map<String,String> versionDocInfo=new HashMap<String,String>(1);
versionDocInfo.put(versionDoc.get("LongNumber"),"abc");
System.out.println(versionDocInfo.toString());
Run Code Online (Sandbox Code Playgroud)

在Java_1.8_60(编译并运行)中,此代码运行良好,但是在Java 11中编译并运行时,它将引发以下异常:

Exception in thread "main" java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.String (java.lang.Integer and java.lang.String are in module java.base of l
oader 'bootstrap')
        at teststringandlong.Trial.main(Trial.java:35)
Run Code Online (Sandbox Code Playgroud)

Java 11中有关HashMap的变化吗?

java generics hashmap java-8 java-11

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

Java 10巴拿马项目 - 为巴拿马提供JNI解决方案

我最近一直在读巴拿马项目.

我知道它将成为JNI的下一代替代品 - 它将允许Java开发人员使用Java在本机层上进行编码(这是令人惊叹的恕我直言).

从我所看到的jnr-posix看,用法很简单,例如:

public class FileTest {
    private static POSIX posix;

    @BeforeClass
    public static void setUpClass() throws Exception {
        posix = POSIXFactory.getPOSIX(new DummyPOSIXHandler(), true);
    }

    @Test
    public void utimesTest() throws Throwable {
        // FIXME: On Windows this is working but providing wrong numbers and therefore getting wrong results.
        if (!Platform.IS_WINDOWS) {
            File f = File.createTempFile("utimes", null);

            int rval = posix.utimes(f.getAbsolutePath(), new long[]{800, 200}, new long[]{900, 300});
            assertEquals("utimes did not return 0", 0, rval);

            FileStat …
Run Code Online (Sandbox Code Playgroud)

java java-native-interface java-10 jep project-panama

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

为什么 Java SIMD(巴拿马)比标量慢?

我在巴拿马遵循了 Java 中 SIMD 的英特尔教程 。我想对数组做一些简单的操作:

这里是网站的标量和向量循环:

public static void scalarComputation(float[] a, float[] b, float[] c) {
    for (int i = 0; i < a.length; i++) {
        c[i] = (a[i] * a[i] + b[i] * b[i]) * - 1.0f;
    }
}

public static void vectorComputation(float[] a, float[] b, float[] c) {
    int i = 0;
    for (; i < (a.length & ~(species.length() - 1));
         i += species.length()) {
        FloatVector<Shapes.S256Bit> va = speciesFloat.fromArray(a, i);
        FloatVector<Shapes.S256Bit> vb = speciesFloat.fromArray(b, i); …
Run Code Online (Sandbox Code Playgroud)

java performance simd project-panama

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

JDK 11 + Solaris 64 位问题:- ClassCastException:类 sun.font.CompositeFont 无法转换为类 sun.font.PhysicalFont

线程“main”中的异常 java.lang.ClassCastException:类 sun.font.CompositeFont 无法转换为类 sun.font.PhysicalFont (sun.font.CompositeFont 和 sun.font.PhysicalFont 位于加载程序“bootstrap”的模块 java.desktop 中')在 solaris sparc 64 位上使用 JAVA 11。JDK 版本:-- 11.0.2

在 Solaris Sparc 64 位上使用 JDK 11.0.2 运行我们的应用程序时,我们遇到了以下异常:-

Exception in thread "main" java.lang.ClassCastException: class sun.font.CompositeFont cannot be cast to class sun.font.PhysicalFont (sun.font.CompositeFont and sun.font.PhysicalFont are in module java.desktop of loader 'bootstrap')
        at java.desktop/sun.font.SunFontManager.getDefaultPhysicalFont(SunFontManager.java:1086)
        at java.desktop/sun.font.SunFontManager.initialiseDeferredFont(SunFontManager.java:965)
        at java.desktop/sun.font.CompositeFont.doDeferredInitialisation(CompositeFont.java:287)
        at java.desktop/sun.font.CompositeFont.getSlotFont(CompositeFont.java:376)
        at java.desktop/sun.font.CompositeStrike.getStrikeForSlot(CompositeStrike.java:80)
        at java.desktop/sun.font.CompositeStrike.getFontMetrics(CompositeStrike.java:95)
        at java.desktop/sun.font.FontDesignMetrics.initMatrixAndMetrics(FontDesignMetrics.java:360)
        at java.desktop/sun.font.FontDesignMetrics.<init>(FontDesignMetrics.java:351)
        at java.desktop/sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:303)
        at java.desktop/sun.swing.SwingUtilities2.getFontMetrics(SwingUtilities2.java:1231)
        at java.desktop/javax.swing.JComponent.getFontMetrics(JComponent.java:1646)
        at java.desktop/javax.swing.plaf.basic.BasicGraphicsUtils.getPreferredButtonSize(BasicGraphicsUtils.java:351)
        at java.desktop/javax.swing.plaf.basic.BasicButtonUI.getPreferredSize(BasicButtonUI.java:474)
        at java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1680)
Run Code Online (Sandbox Code Playgroud)

int w …

java solaris java-11

5
推荐指数
0
解决办法
943
查看次数

将List <CustomerOrder>分组到Map <Gender,Money>中

public class CustomerOrder {

    private final Gender gender;
    private final Order order;

    public Gender getGender() {
        return gender;
    }

    public Order getOrder() {
        return order;
    }

}

public class Order {

    private final long orderAmount;

    public long getOrderAmount() {
        return orderAmount;
    }

}
Run Code Online (Sandbox Code Playgroud)

我想实现相当于java的java流:

SELECT Gender, SUM(orderAmount) FROM orders
GROUP BY Gender;
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑:我简化了问题 - CustomerOrder包含一个Order,其中包含orderAmount

我设法通过以下方式获得Map<Gender, List<Long>>:

Map<Gender, List<Long>> map = orders.stream()
    .collect(Collectors.groupingBy(CustomerOrder::getGender))
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

为什么使用方法引用以字节码生成内部类?

我写了使用方法参考的简单示例:

public class Main {
private static String identity(String param) {
    return param;
}

public static void main(String... args) {
    Function<String, String> fun = Main::identity;
    System.out.println(fun.apply("Hello"));
}}
Run Code Online (Sandbox Code Playgroud)

And in generated byte code is InnerClass:

InnerClasses:
 public static final #68= #67 of #71; //Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandles
BootstrapMethods:
0: #35 invokestatic java/lang/invoke/LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
  #36 (Ljava/lang/Object;)Ljava/lang/Object;....
Run Code Online (Sandbox Code Playgroud)

I supposed this innerClass is used in lambda bootstrap method, but I do not know when jvm create object of this class and …

java jvm inner-classes

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

为什么不允许使用'var'的复合定义?

好吧,我真的认为这会起作用(在方法内):

var x, y = 1;

var x = 1, y = 2;
Run Code Online (Sandbox Code Playgroud)

但它没有,它不会编译 - "化合物定义中不允许使用var".

我想这是一个平常的权衡.这不是一个非常常用的功能,因此没有实现,但我们可以肯定,可能会在将来的版本中...

java java-10

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

如何在Kotlin中使用泛型参数创建列表

我有一个界面:

interface SomeInterface<T>{

}
Run Code Online (Sandbox Code Playgroud)

在java中我可以声明列表如下:

List<SomeInterface> list = new ArrayList<>();

怎么在Kotlin写相同的?如果我试试这个:

var list = ArrayList<PreferenceSerializer>()
Run Code Online (Sandbox Code Playgroud)

我收到一个错误 一个错误

java kotlin

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

如何创建JRE来运行jar程序?

我有一个可执行文件 jar,可以使用java -jar app.jar运行,但SDK 为 326MB。这是很多。

jlink 可以创建JRE,但我无法使用jlink,因为我有一个非模块化应用程序

您能告诉我如何创建 JRE 吗?

java executable-jar jlink maven

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