これは暗黙の型変換の定義とまったく同じことではありませんが、私はこの標準でどのくらいの標準を打ち破っているのでしょうか...。Javaの暗黙のオブジェクト型ですか?
私は基本的に変数をキャストする抽象クラスを作成しますコンストラクタに渡される文字列によって異なります。例えば
:あなたは私が何を取得しています
public abstract class MyClass {
Object that;
public MyClass(String input){
if("test1".equals(input){
that = new Test1();
}
else{
that = new Test();
}
}
public void doSomething(){
if(that instanceof Test1){
//specific test1 method or variable
} else if(that instanceof Test2)}
//specific test2 method or variable
} else {
//something horrible happened
}
}
}
参照してください?今私が遭遇する問題は、私のコンパイラがthat
をまたはTest2
のdoSomething
メソッドに明示的にキャストしてほしいということです。ifステートメントがかなり保証されているにもかかわらず、タイプ。
私が得意なのは、これは有効な解決策ですか?
私は他のクラスは基本的に同じことをしますが、単純な違いによって2つの異なるライブラリを使用します。このクラスは他のすべてのオブジェクトを簡単に追跡して変更するのに役立ちます。
これは単なる恐ろしいデザインではありません(それは全体の列対行論争の議論です)。しかし、通常はタイプ間の多型性を奨励する「Javaモデル」*には適合しません。このタイプのアプローチは、「真の」多型(Cおよびタグ付きの共用体)がない言語やパターンマッチングをサポートする言語でよく見られます。 –