私はクラスがたくさんありますUNO、HAV、MAS、KOS 私は工場パターンを作成したいと思います。Javaファクトリパターン - クラスを動的にロードする
validator.load("UNO").validate();
私はバリデータクラスにクラスをロードしてインスタンスを返す動的にする必要があります。
(クラスの名前を動的に設定してインスタンスを返す)
私の問題は、互換性のない型がある場合、クラスのインスタンスを返すにはどうすればいいですか?
返品タイプのメソッドに何を書き込むのか分かりません。
バリデーションクラスの主な問題。
public SegmentAbstract load(String str) {
と
return SegmentAbsClass.forName(identify);
メインクラス
try{
validator.load("UNO").validate();
}catch(Exception e){
System.out.print("No class ");
}
抽象クラス(SegmentAbstract)
public abstract class SegmentAbstract {
public abstract Boolean validate();
}
クラスUNO
public class UNA extends SegmentAbstract{
public Boolean validate() {
System.out.print("UNO!!");
return true;
}
}
クラスバリ
public class Validator {
public SegmentAbstract load(String str) {
String identify = str.substring(0, 3);
try {
return SegmentAbsClass.forName(identify);
}
catch(Exception e) {
return this;
}
}
}
いつも 'SegmentAbstract'クラスの新しいコピーを返さなければなりませんか? – hellectronic
@Dezigoあなたのクラスが 'SegementAbstract'を拡張している限り、それらはすべて' validate() 'を実装するので互換性がありません。何が問題なのですか? – stacker
はい!常に新しいコピー! – Dezigo