我有以下类别:推断泛型类在Java中
public abstract class ClassWithHelper<T extends HelperInterface> {
Class<T> helperClass;
protected T helper;
protected Gson gson = new GsonBuilder().create();
public void loadHelper(String helperString) throws InstantiationException, IllegalAccessException {
if (!Strings.isNullOrEmpty(helperString)) {
wizard = gson.fromJson(helperString, getHelperClass());
} else {
wizard = getHelperClass().newInstance();
}
}
protected abstract Class<T> getHelperClass();
}
public class ImplementingClass extends ClassWithHelper<HelperClass> {
@Override
protected Class<HelperClass> getHelperClass() {
return HelperClass.class;
}
}
现在,什么是好的是,当我打电话implementingClass.helperClass,它会自动它转换到助手类。但是,我想知道如果我真的需要编写并重写getHelperClass。我无法编写helper.getClass(因为它可能为空),并且我知道写入的方式存在类型擦除问题。
但是,有没有办法让我重写我的代码,以避免必须以两种方式声明helperClass,并仍然有类型推断?
你介意编辑后有很好的格式化的代码? – Thomas 2012-08-13 15:14:41
是的,更好的格式化会有所帮助。此外,代码中似乎没有一些东西。 T是ClassWithHelper类的类型参数吗? ImplementingClass是否为T提供了一个类型参数? – 2012-08-13 15:22:35