我有很多类(class)UNO、HAV、MAS、KOS 我想创建一个工厂模式。
validator.load("UNO").validate();
我需要动态地将类加载到 validator 类中并返回一个实例。
(动态设置类名并返回实例)
我的问题是:如果我有不兼容的类型,如何返回类的实例?
我不知道在方法的返回类型中要写什么。
validator 类中的主要问题。
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;
}
}
类 validator
public class Validator {
public SegmentAbstract load(String str) {
String identify = str.substring(0, 3);
try {
return SegmentAbsClass.forName(identify);
}
catch(Exception e) {
return this;
}
}
}
最佳答案
试试这个:
public interface Validator {
boolean validate(Object obj);
}
public final class ValidatorFactory {
private ValidatorFactory(){}
public static Validator load(String type){
try {
Class<?> clazz = Class.forName(type);
if (Arrays.asList(clazz.getInterfaces()).contains(Validator.class)){
return (Validator) clazz.newInstance();
}
throw new IllegalArgumentException("Provided class doesn't implement Validator interface");
} catch (Exception e) {
throw new IllegalArgumentException("Wrong class provided", e);
}
}
}
也许这会有所帮助???
关于Java工厂模式——动态加载类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8456618/