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