問題タブ [jls]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
15 に答える
55688 参照

java - インターフェイスに静的メソッドがないのに、静的フィールドと内部クラスは問題ないのはなぜですか? [Java8以前]

インターフェース内で静的メソッドを定義できない理由について、ここでいくつかの質問がありましたが、基本的な矛盾に対処するものはありません: インターフェース内で静的フィールドと静的内部型を定義できるのに、静的メソッドを定義できないのはなぜですか?

静的な内部型は、新しいクラスを生成する構文糖衣にすぎないため、おそらく公正な比較ではありませんが、なぜメソッドではなくフィールドなのですか?

インターフェース内の静的メソッドに対する議論は、JVM が使用する仮想テーブル解決戦略を壊すというものですが、それは静的フィールドにも同様に適用されるべきではありません。つまり、コンパイラはそれをインライン化できますか?

一貫性は私が望んでいるものであり、Java はインターフェース内でいかなる形式の静的もサポートしないか、一貫してそれらを許可する必要があります。

0 投票する
6 に答える
9190 参照

java - これが Java コンストラクターと静的イニシャライザーで 65,535 バイトの制限を超えるのはなぜですか?

免責事項: Java で実行時にこれを生成できることを認識しています。これは、一部のコードのパフォーマンス テスト中に非常に特殊なケースで必要でした。私は別のアプローチを見つけたので、これは実用的なものよりも単なる好奇心です。

以下を静的フィールド、インスタンス フィールドとして試し、コンストラクター内で直接初期化しました。Eclipse が「コンストラクタ TestData() のコードが 65535 バイトの制限を超えています」または「静的イニシャライザのコードが 65535 バイトの制限を超えています」と通知するたびに。

10,000 個の整数があります。各 int が 4 バイト (32 ビット) の場合、それは 40,000 バイトではないでしょうか? 単に配列を構築するだけのデータに加えて、25,000 バイト以上のオーバーヘッドが実際にありますか?

データは、この小さな Python で生成されます。

ここに小さなサンプルがあります:

0 投票する
2 に答える
1229 参照

java - 固定/可変アリティ (varargs) の両方に一致する最も具体的な方法

Java 言語仕様のセクション 15.12.2.5 では、固定アリティのメソッドと可変アリティのメソッド (つまり ) の両方の場合で最も具体的なメソッドを選択する方法について説明していますvarargs

JLS で見つけられないのは、1 つは固定アリティで、もう 1 つは可変アリティの2 つの方法の間で決定することです。例えば:

期待どおりにコンパイルされます (以下に Yoni が概説する理由によります)。この呼び出しコードは以下もコンパイルします。

それを実行すると、method #1(つまり、非可変引数メソッド) が呼び出されます。この呼び出しコードがあいまいではないのはなぜですか? 固定アリティ方式が可変アリティ方式よりも具体的なのはなぜですか? 誰かが仕様の関連するビットを教えてもらえますか?

0 投票する
9 に答える
90201 参照

java - 既知のタイプのクラスリテラルを作成する方法:クラス>>

次のようにします。

ジェネリックスを満たし、コンパイルするこのメソッドからどのクラスリテラル式を返すことができますか?List.classコンパイルせず、どちらもコンパイルしませんList.<String>class

「なぜ」とお考えの場合は、Springの実装を作成しています。これには、の実装FactoryBean<List<String>>が必要ですClass<List<String>> getObjectType()。ただし、これは春の質問ではありません。

編集:私の哀れな叫びはSpringSourceにいる勢力によって聞かれたので、Spring 3.0.1ではreturnタイプがにgetObjectType()変更されClass<?>、問題をうまく回避できます。

0 投票する
1 に答える
13979 参照

java - Javaでのパラメータ保証の実行順序は?

次の関数呼び出しがある場合C

barFuncおよびの実行順序はBazFunc指定されていないため、の前または前にbarFunc()呼び出すことができます。bazFunc()bazFunc()barFunc()C

Java関数の引数式などの実行順序を指定していますか?指定されてCいませんか?

0 投票する
2 に答える
446 参照

java - Java 言語仕様第 3 版の正誤表

私は JLS を学習と教育の両方のリソースとして広く使用していますが、いくつかのエラーがあることに気付きました。

単純なタイプミス ( JLS 5.1.4の "convesions" など) もありますが、かなり重大なエラーと思われるものもあります。

たとえば、JLS 18.1 The Grammar of the Java Programming Languageは、Java 言語の文法の正式なリファレンスであるはずですが、決して使用されることのない作成規則が含まれています。(例MoreStatementExpressions)。確かにこれは、与えられた文法の他の部分でより深刻なエラーの兆候ですよね?

では、第 3 版の正誤表はありますか? ありますか?見つかったエラーを Sun/Oracle に送信する必要がありますか? 第4版はいつか出ますか?

0 投票する
1 に答える
467 参照

java - JLSには、静的初期化ブロックの実行順序に関する保証はありますか?

次のような構造を使用するのは信頼できるのだろうか。

初期化するブロックの前に初期化ブロックが実行されるNullPointerExceptionため、取得する可能性はありますか?msgSourceengMessages

msgSource(上部の初期化ブロックの最後で初期化を行わない理由について:好みの問題です。説明されている構造が信頼できない場合は、そうします)

0 投票する
4 に答える
168 参照

java - Javaのサブコンテキストはスタック上の別々の行ですか?

Javaの場合、これは次の場合です。

私が疑問に思っているのは、これです。 -statementxのスコープに限定されているという事実ifは、Javaコンパイラの機能にすぎないのでしょうか、それとも-statementxの後で実際にスタックから削除されているのでしょうか。if

0 投票する
1 に答える
1421 参照

java - Java「フレッシュ型変数」

JLSの変換とプロモーションの章で「新しい型変数」とはどういう意味ですか?