cost 255 ms
最終私有枚舉字段中的循環依賴導致 Null 個值

[英]Cyclic dependency in final private enum fields causes Null values

賞金將在 6 天后到期。 此問題的答案有資格獲得+50聲望賞金。 mjn想讓更多人關注這個問題。 考慮這些枚舉聲明: 枚舉字段之間存在循環依賴關系。 沒有編譯器警告(使用 Java 8)。 但是,所有這些測試都將在第二行失敗: enum字段中的null值怎么解釋呢? 似乎 private fi ...

在覆蓋方法的情況下的通用 throws 子句處理

[英]Generic throws clause handling in case of overridden methods

考慮 JLS 中的以下條款:8.4.8.3。 如果 m1 的 unerased throws 子句不包含 m2 的 throws 子句中每個異常類型的超類型(如有必要,適應 m1 的類型參數),則會出現編譯時未經檢查的警告。 顯然 - 基於其他規則: 超類方法必須拋出重寫類方法拋出的所有異常類型的超 ...

“正確同步”可以應用於 class 而不是整個程序嗎?

[英]Could "correctly synchronized" be applied to a class instead of the whole program?

JLS 中有一個正確同步的術語: 當且僅當所有順序一致的執行都沒有數據競爭時,程序才能正確同步。 如果程序正確同步,則該程序的所有執行看起來都是順序一致的(第 17.4.3 節)。 這種正確同步是否可以應用於比整個程序更小的東西,比如一些集合 class? 換句話說,假設我想創建自定義並發集合 ...

根據 JLS,當接口保留類型轉換為最終 class 類型時,Cast 運算符有效性的規則

[英]Rule for Cast operator validity when Interface held type is converted to a final class Type according to JLS

考慮 JLS 8 §5.5.1的以下條款 Blockquote 如果 S 是接口類型: ... 如果 T 是最終的 class 類型,則: ... – 否則,S 要么是調用某個泛型類型聲明 G 的參數化類型,要么是對應於泛型類型聲明 G 的原始類型。那么必須存在 T 的超類型 X,這樣 X 就 ...

關於 jls-8.4 和 jls-8.8.1 中接收器參數的悖論

[英]paradox about receiver parameter in jls-8.4 and jls-8.8.1

jls-8.4指出 receiver 參數是實例方法或內部類的構造函數的可選句法設備。 對於實例方法,接收者參數表示調用該方法的 object。 對於內部類的構造函數,接收參數表示新構造的 object 的直接封閉實例。 jls-8.4.1中也有例子,注意高亮部分 但是, jls-8.8.1指出 ...

2022-11-16 11:06:22   1   39    java / jls  
為什么在順序一致的執行中沒有數據競爭就足以保證在所有執行中都不會出現數據競爭?

[英]Why no data races in sequentially consistent executions is enough to guarantee that there will be no data races in all executions?

根據Java Memory Model (JMM) : 當且僅當所有順序一致的執行都沒有數據競爭時,程序才能正確同步。 如果程序正確同步,則該程序的所有執行看起來都是順序一致的(第 17.4.3 節)。 我不明白沒有 SC 執行有數據競爭這一事實如何保證每次執行都沒有數據競爭(這意味着每次執行都是 ...

是否可以在 Java 中重現非組合隊列示例?

[英]Is it possible to reproduce non-compositional queues example in Java?

我正在閱讀《多處理器編程的藝術》,第 2 版。 順序一致性是這樣定義的: 順序一致性要求方法調用的行為就像它們以與程序順序一致的順序發生一樣。 請注意,順序一致性不需要保留實時順序,如下例所示: 圖 3.7 順序一致性與實時順序。 線程 A 將 x 入隊,隨后線程 B 將 y 入隊,最后 A 將 ...

最終的多線程保證與 Java 中的 memory model 有何關系?

[英]How are the final multi-threading guarantees and the memory model related in Java?

memory model 在17.4 中定義。 Memory Model 。 final字段多線程保證在17.5 中給出。 最終字段語義。 我不明白為什么這些是單獨的部分。 AFAIK final和 memory model 都提供了一些保證。 任何真正的程序執行都必須尊重這兩個保證。 ...

Java內存模型中的“執行跟蹤”是什么意思

[英]What does "execution trace" mean in Java Memory Model

專用於 Java 內存模型 (JMM) ( 鏈接) 的語言規范部分多次提到“執行跟蹤”。 例如,從一開始: 給定程序和該程序的執行軌跡,內存模型描述該執行軌跡是否是程序的合法執行。 Java 編程語言內存模型的工作原理是檢查執行跟蹤中的每次讀取,並根據某些規則檢查讀取觀察到的寫入是否有效。 ...

java volatile的語義是否保證不會出現錯誤的結果? (兩個線程先寫后讀)

[英]Does the semantics of java volatile guarantee that wrong results will not appear? (Two threads write first and then read)

r1 和 r2 是局部變量 問題1: r1==r2==0的結果是非法的,不出現嗎? 所有語句都是寫或讀 volatile 字段,按常識應該是r1==1或r2==1或r1==r2==1三種情況之一。 讓我困惑的是,volatile的語義是當read看到write的結果時,happens- ...

方法引用表達式“准確”的條件

[英]Conditions for Method Reference Expression to be "exact"

考慮 JLS 中的以下文章 (§15.13.1) 如果滿足以下所有條件,則以 Identifier 結尾的方法引用表達式是精確的: 如果方法引用表達式的形式為 ReferenceType::[TypeArguments] Identifier,則 ReferenceType 不表示原始類型。 要搜索 ...

匿名 class 的隱式構造函數,其超級 class 是內部 Class

[英]Implicit constructor in case of anonymous class whose super class is an Inner Class

考慮 JLS 中的以下文章:§15.9.5.1 當匿名 class 擴展內部 class - 然后對於匿名 class 的隱式構造函數的隱式構造函數:以下是關於主體構造函數的規則: 構造函數體由o.super(...)形式的顯式構造函數調用(第 8.8.7.1 節)組成,其中o是構造函數的第一個形 ...

根據 JLS,可以出現表達式的地方?

[英]Places where an expression can occur as per the JLS?

考慮第15.1條關於表達可能出現的地方: 表達式出現在任一: • 正在聲明的某些(類或接口)類型的聲明:在字段初始化程序中、在 static 初始化程序中、在實例初始化程序中、在構造函數聲明中、在方法聲明中或在注釋中。 • package 聲明或頂級類型聲明上的注釋。 我不認為這是所有表達出現 ...

Java中不合格標識符的正式定義是什么?

[英]What is the formal definition of an unqualified identifier in Java?

在 Java 中,“不合格標識符”的正式定義是什么? Java 語言規范在第 4.4 節中定義類型變量時提到了非限定標識符: 類型變量是在 class、接口、方法和構造函數主體中用作類型的非限定標識符。 但是,我在規范中找不到任何不合格(或合格)標識符的正式定義。 這在文檔的其他地方可用嗎? 或 ...

java中的模式變量scope是如何解決的?

[英]How is the scope of pattern variables resolved in java?

我正在查看 java 中的模式變量。 在閱讀JLS時,它提到了關於何時引入模式變量的幾個條件。 它提到 - 分析依賴於技術術語“引入者”,其形式如下: 模式變量由表達式引入,當為真時表達式為假時引入模式變量模式變量由語句引入在 6.3.1 中,它提到了 Scope 用於表達式中的模式變量,它說明了 ...

即使它是關鍵字,使用 `record` 作為變量名是否合法?

[英]Is it legal to use `record` as a variable name even though it's a keyword?

這令人驚訝:我能夠使用名稱record聲明一個變量,即使它現在已成為關鍵字。 看看這個: 當使用 Java 17 編譯和運行時,它給出: 我原以為這會導致錯誤,就像嘗試聲明名為class的變量一樣。 據我所知,Java 人員非常小心,不會破壞現有代碼,因此我認為這可能是一個深思熟慮的選擇。 ...

列表<? super List<? super Integer> &gt; 和列表<? extends List<? super Integer> &gt; 以及如何正確使用它?

[英]List<? super List<? super Integer>> and List<? extends List<? super Integer>> and how to use it correctly?

考慮以下片段: List&lt;Double&gt; doubleList = null; List&lt;Integer&gt; integerList = null; List&lt;Number&gt; numberList = null; //expression:1 List&lt;? ...


 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM