この記事はhttp://www.javapractices.com/topic/TopicAction.do?Id=31です。これはinstanceofを使って自分のオブジェクトがあらかじめ確認していることを確認するのが悪いことです。Java:instanceofを使用して異なるオブジェクトメソッドを公開する
しかし、私はこの場合、どうやってそれを行うのか分かりません。アイテムリストを返すAPIがあります。アイテムのリストは、すぐにそれがAPIの私があるので、それは管理者
for(Item item : items){
if (item instanceof User){
((User)item).getName());
((User)item).getEmail());
}
else if (item instanceof Admin){
((Admin)item).getName());
((Admin)item).getEmailList().getPrimary());
}
}
に当たるとして、私は(ユーザー)のアイテムなどのアイテムをキャストした場合、私はClassCastExceptionがあるでしょう
ユーザーと管理者の両方を返します。アイテムを変更できません。アイテムには子プロセスのメソッドがありません。電子メールの取得方法は異なります。別の選択肢がありますか?
そのAPI、私は[OK]を、その後の選択肢がある – javaNoober
いずれかのユーザーまたは管理者を変更することはできません。オプション1:あなたの現在のソリューションに固執します。これは最高の貿易のようです。オプション2:インターフェイスを定義し、このインターフェイスを実装して元のオブジェクトをラップする2つのラッパークラスを作成します。OOPの観点からすれば、これはもっときれいですが、これは少し大きめだと思います。 3.理論的な(!)オプション:リフレクションを使用することもできますが、しないでください - コードをさらに悪化させるでしょう - 特に2つの異なるItemサブタイプがある場合は特にありません – MRalwasser
true、ラップすると良いアイデアです – javaNoober