問題タブ [effective-java]

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 投票する
2 に答える
4865 参照

java - 転送クラスの例

効果的な Javaを読んで、次の例を から見ましたItem 16: Favor composition over inheritance

以下の本では、要素が(変数InstrumentedSetを介して)挿入された回数を追跡できることを示しています。InstrumentedSet.addCount

これを行うには、このクラス オブジェクトの を単純に追加し、実際のクラスの の実際の実装をaddCount呼び出すを呼び出します。ForwardingSet.add()Setadd()

このパターン/アプローチを使用するには、クラスがその親クラスのすべてForwarding*のメソッド (この場合)を呼び出す必要があることを理解していますか?Set

0 投票する
3 に答える
266 参照

java - プライベート関数は、パラメーターの検証またはユーザー入力と内部データ構造をどのように行うべきですか?

次のコードは、合計が x になる整数のペアを返します。たとえば、arr {1, 2, 3, 4, 5] で x が 7 の場合、リストには {3, 4} と {2, 5} が含まれている必要があります。主な目標は、プライベート メソッドでパラメーターの検証を実行する方法を理解することです。質問はコメント内にネストされています。提案は、尋ねられた質問のみに限定してください。私の質問をチェックするためにコードに飛び込んでくれてありがとう。

0 投票する
3 に答える
2422 参照

java - ファクトリメソッドを書く最も効果的な方法は何ですか?

ほとんどの場合、ファクトリ メソッドを記述するとき、それはif成長し続けることができる一連の条件です。ifそのようなメソッドを (最小限の条件で)書く最も効果的な方法は何ですか?

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

java - JavaBean の欠点 - 構築中に一貫性がない

有効な Java - 項目 2 の状態

JavaBean は、その構築の途中で矛盾した状態になることがあります。

私はこれを理解できませんでした.オブジェクトがメソッドで構築されている場合、例外が発生する必要がある場合、それはコンストラクターでも発生する可能性があります. そして、これはスレッド化とどのように関連していますか?

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

java - 有効な Java - 項目 25 - ジェネリック クラス キャスト例外 リストと配列の混合

Joshua Bloch の「Effective Java 2nd edition」の項目 25 (122 ページ) を読んでいます。この章をさらに読み進めていくと、著者が次のコードを記述している箇所に到達します。

次に、著者は、明示的なキャストを行に追加する必要があるため、コンパイラーはこれをコンパイルしないと述べています。これは、代入が存在する行に明示的なキャストを追加する必要があり、E[] snapshot = list.toArray();結果として this が発生しE[] snapshot = (E[]) list.toArray();その後、.[unchecked] unchecked cast


Q1: この本は Java 6 までの変更を考慮に入れていることを知っています (そして、現在 Java はほぼ 8 です)。ただし、同じメソッドを作成すると、コンパイルから同じエラーが発生します。これは、明示的なキャストを追加する必要があるためです。ただし、警告はありません。それで、その警告は何についてですか?


Q2: 著者は、次のメソッドが機能すると述べていますが、タイプ セーフではないことが判明しました。

ClassCastExceptionマイナーな変更により、明示的なキャストを含まない行で aをスローすることができます 。

わかりました、それはわかりました...しかし、どうすればそれをスローさせることができClassCastExceptionますか?


自分で確認したい場合は、この投稿にすぐに実行できる例を残します。