jls

    2热度

    2回答

    我对以下情况感到困惑。 考虑两个包a和b有以下类: 1)MethodInvoker只是调用call()给定对象上: package b; import java.util.concurrent.Callable; public class MethodInvoker { public static void invoke(Callable r) throws Exception {

    -4热度

    1回答

    Java是用来评估一个确定性表达式的算法吗?请看下面的例子: int x = 1 + 2 + 3; 我不要求计算的顺序,即Java的第一次评估,然后表达“2”及“1”“3”从左至右,因为它的定义由JLS在第15.7章中。 “评估订单”。 我想知道,虽然它被定义为第一个'1 + 2'被评估或虽然实现是自由的,首先评估'2 + 3'。 在此先感谢! 编辑: 我知道评估顺序在Java和该表达式的结果

    7热度

    1回答

    我有以下类: public abstract Foo { Foo() {} public abstract Foo doSomething(); public static Foo create() { return new SomePrivateSubclassOfFoo(); } } 我想将其更改为以下定义: public abstr

    1热度

    1回答

    我学会了here,即使这是最佳实践并且尽管大多数编译器要求您这样做,但它并不是严格要求在其包含的公共类之后命名的.class至少从语言规范的角度来看。 我搜索了JLS和JVM规范,但无法找到本主题讨论的实际章节。对我而言,这个问题在之间根本没有被处理过。 如果存在的话,Oracle官方文档可以确认或揭穿以下声明? 给予.class文件相同的名称,它们所包含的公共类 - 无论他们做的 - 简直是必须

    4热度

    1回答

    为什么不下面的代码生成编译时未检查警告: class Parent { public List method(){ return null; } } class Child extends Parent { public List<String> method() { return null; } } 虽然下面的实际执行

    1热度

    2回答

    下面的代码: class Parent { public void method(List parameter){ } } class Child extends Parent { public void method(List<String> parameter) { } } 失败,出现以下错误编译: Parent.java:12: erro

    0热度

    1回答

    字符串是不可变的,并在字符串池中进行管理。我想知道这个池是如何管理的。如果在应用程序中使用了大量的字符串字符串(我理解字符串生成器应该在像append,replace操作那样的修改时使用),那么Pool通过不重新重新创建新的String对象来增强应用程序的性能但使用池中存在的相同对象,这是可能的,因为字符串是不可变的,并且这样做没有不良影响。 我的问题是如何管理这String Pool。如果在某些

    1热度

    1回答

    http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.3.1.4 Java语言规范8/8.3.1.4挥发性字段 volatile example 问题: 在易失性的例子中,我添加同步关键字方法two()避免执行one()方法two()。 但我仍然注意到j大于i:为什么? 注: 我使用Java HotSpot的1.8.0_

    4热度

    1回答

    只有一个官方Java Language Specification,所有的Java实现都必须遵守它。 API文档如何:所有的Java实现都需要遵守this version,或者只要与JLS兼容,实现是否可以用不同的方式定义一些方法和类的行为? 让我们举一个具体的例子:Java实现是否可以包含一个HashMap,它不接受null元素?

    7热度

    1回答

    考虑以下降低测试用例之间暧昧: import java.util.AbstractList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.function.BiFunction; import java.util.function.Funct