問題タブ [final]
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.
java - Java: サブクラス インスタンスごとに異なる値を必要とするスーパークラスの public static フィールドの初期化
こんばんは、
コンテナークラスBox
に包含クラスの が含まれるように、一連の Java クラスを開発しています。Aは、他の との関係を指定できる必要があります。これを行う良い方法は、次のようにすることだと思いました。List
Widget
Widget
Widgets
のサブクラスは次のようになりWidget
ます。
これで、BlueWidget
が実行できgetBox().addWidgetRelationship(RelationshipTypes.SomeType, RedWidget.WIDGETID
、Box
2 番目のパラメーターを と比較してリストを反復処理できますiter.next().getWidgetID()
。
今のところ、これはすべてうまく機能しています。私がやろうとしているのはpublic static final WidgetID WIDGETID
、すべてのサブクラスで宣言し、代わりに親Widget
クラスに実装する必要がないようにすることです。問題は、そのコード行をWidget
( の実装とともにgetWidgetID()
) に移動すると、 のサブクラスのすべてのインスタンスが、に対して同じにWidget
なるように見えることです。ただし、非静的にすると、 を呼び出すことさえできなくなります。static final WidgetID
Subclassname.WIDGETID
Subclassname.WIDGETID
のインスタンスとサブクラスごとに異なることを確認しながらWidgetID
、親クラスに静的を作成するにはどうすればよいですか? それとも、ここでの仕事に間違ったツールを使用していますか?Widget
Widget
Widget
ありがとう!
super()
[編集] ライブラリのユーザーがすべてのサブWidget
コンストラクターを呼び出す必要はありません。
java - リフレクションを介してJavaのクラスのpublic static finalフィールド/プロパティの値を取得する
クラスがあるとします:
リフレクションを介して「_1st」の値を取得するにはどうすればよいですか?
php - クラスまたはメソッドを「最終」として宣言するシナリオの例は何ですか?
クラスまたはメソッドを「最終」として宣言するシナリオの例は何ですか? いつこれを行う必要がありますか?
「最終」の実用的な使い方を理解するための例を教えてください...
あなたの答えを詳しく教えてください....
私はOOPの初心者なので、私を導いてください
java - Clonable を Java に実装する
どのような場合にこの方法を使用する必要がありますか:
そして、どの場合にそのように使用する必要がありますか:
x
が final で、最初の方法を使用したい場合はどうすればよいですか?
最初の方法については、次のように理解しています。スーパークラスを複製してアップキャストしたため、一部のメンバーが初期化されていません。この後、これらのメンバーを初期化します。私の理解は正しいですか?
ありがとうございました。
java - Java に定数機能がないのはなぜですか?
Java の定数の背後にある理由を特定しようとしていましたが、Java ではfinal
キーワードを使用して定数を宣言できることを知りました。
const
私の質問は、Java が定数 ( ) 機能を導入しなかった理由です。多くの人が C++ から来たと言うので、C++ にはconst
キーワードがあります。
あなたの考えを共有してください。
java - 匿名Javaクラスからプリミティブ変数を変更する合理的な方法は何ですか?
次のコードを書きたいと思います。
found
である必要があるため、明らかにこれは許可されていませんfinal
。found
スレッド セーフの理由から、メンバー フィールドを作成できません。最良の代替手段は何ですか? 1 つの回避策は、定義することです。
しかし、これは適切にフォーマットすると多くのスペースを占有することになり、できれば車輪を再発明したくありません。List<Boolean>
a を単一の要素 (その要素を変更するか、リストを空にする) またはa で使用することもできますBoolean[1]
。しかし、どのオプションも意図したとおりに使用されていないため、すべてがおかしいようです。
これを行うための合理的な方法は何ですか?
java - Java で最終変数を初期化する際の問題
私はJavaの問題のわずかなバリエーションに遭遇し続けています.
final であるが動的なオブジェクト プロパティがあります。つまり、一度割り当てられた値を定数にしたいのですが、値はランタイムごとに異なる場合があります。そのため、クラスの先頭でクラス レベル変数を宣言しますprivate final FILE_NAME;
。次に、コンストラクターで値を割り当てます-たとえばFILE_NAME = buildFileName();
buildFileName()
メソッドに例外をスローするコードがあると、問題が発生します。だから私はコンストラクタで次のようなことを試みます:
「空白の最終フィールド FILE_NAME が初期化されていない可能性があります」というエラーが表示されます。ここで、Java の厳密なコンパイラーに少しイライラし始めます。キャッチに到達するとプログラムが終了するため、これが問題にならないことはわかっています...しかし、コンパイラはそれを認識しないため、このコードを許可しません。キャッチにダミーの割り当てを追加しようとすると、「最後のフィールド FILE_NAME は既に割り当てられている可能性があります」というメッセージが表示されます。一度しか割り当てられないため、try-catch の前にデフォルト値を割り当てることは明らかにできません。
何か案は...?
class - メソッドをArrayオブジェクトに追加するScalaのパターンはありますか?
メソッドをArrayオブジェクトに追加できるScalaのパターンはありますか?
Int から RichInt への暗黙的な変換を考えています。しかし、Array は final クラスであるため、それはできません。
java - ArrayBlockingQueue で、最終メンバ フィールドをローカル最終変数にコピーするのはなぜですか?
では、ロックを必要とするすべてのメソッドは、を呼び出す前ArrayBlockingQueue
にロックをローカル変数にコピーします。final
lock()
フィールドがのときにthis.lock
ローカル変数にコピーする理由はありますか?lock
this.lock
final
E[]
さらに、操作する前にのローカル コピーも使用します。
final フィールドをローカルの final 変数にコピーする理由はありますか?
java - メソッドでの最終変数宣言の効果は何ですか?
単純なサーバーの典型的な例:
なぜSocket
として宣言する必要がありますfinal
か?Thread
リクエストを処理するnewがsocket
メソッド内の変数を参照し直して、ある種の原因となる可能性があるためConcurrentModificationException
ですか?