2016-06-24 25 views
0

の実数型を知らなくても、オブジェクトを入力します。私はこのようなインタフェースを実装するいくつかのクラスがあります。これらのクラスは私のモデルである私は私のコードで問題を抱えているオブジェクト

public interface MyInterface{ 
puclic void myMethod{...} 
} 

public class Class1 implements MyInterface{ 
private int choice1; 
private String choice2; 
(Override of the other method define in interface) 
} 

public class Class2 implements MyInterface{ 
private String choice1; 
private int choice2; 
(Override of the other method define in interface) 
} 

を、私は希望ビューにこれらのクラスの各パラメータを個別に選択し、モデル内のビューから1つずつチョイスを保存するように依頼しますが、入力を確認するためにコントローラを使用する必要があります。 問題は、コントローラではオブジェクトの型がわからないため、特定のメソッドを呼び出すことができないか取得または設定できないということです。また、私はClass1とClass2で異なるパラメータを持っているので、私はインターフェイスでそれを書くことができません。 私はどのようにモデルのビューからchoicheを保存するか分からない。

+0

リフレクションを使用すると、フィールドの名前とそのクラスのタイプを取得できます。 – ControlAltDel

+0

"問題はコントローラーでオブジェクトの型がわからないので、特定のメソッドを呼び出すことができないか取得することです。"なぜコントローラが "areYouValid"メソッドを呼び出さないのですか?各入力はその有効値が何であるかを知る必要があるからです。 – Fildor

答えて

2

Class1とClass2の内部に保存ロジックを配置します。それらの値を保存させるか、少なくとも、特定の種類のString、Listなどを生成させて、ビューがコンクリートオブジェクトに依存しないようにすることができます。要約すると、インタフェースにメソッドsave()を追加することが提案されています。このメソッドは、状態を保存するか、または保存可能な方法で状態を返します。

+1

これはコメントとして良いでしょう – ControlAltDel

+0

私は別のアプローチをして質問に答えようとしました。 –

+1

@ControlAltDel - 私は同意しません。これは良い答えです。これは、反射を使ったハッキーなものよりも、問題に対するよりよい解決策を提供します。 –

関連する問題