2 回答
![?](http://img1.sycdn.imooc.com/545864490001b5bd02200220-100-100.jpg)
TA贡献1817条经验 获得超6个赞
您可以使用方法级别的泛型参数:
public abstract <T> T importData(final T dataObject, final String messageId);
请注意,这种类型T可能因每次调用而异。例如,以下是可能的:
POJO myPojo = myClass.importData(otherPojo, "messageId");
Integer someInt = myClass.importData(5, "otherMessageId");
String aSring = myClass.importData("Hello World", "anotherMessageId");
![?](http://img1.sycdn.imooc.com/545850200001359c02200220-100-100.jpg)
TA贡献1943条经验 获得超7个赞
您必须为您的类类型分配一个字母,该字母将在使用您的方法时分配,基于您在调用方法时使用的类型
public abstract T importData(final T dataObject, final String messageId);
然后,您可以在您的实现中,检查不同行为的对象类型
YourAbstractClass c = new YourAbstractClass() {
@Override
public <T> T importData(T dataObject, String messageId) {
if(dataObject instanceof String){
//doSomething
}else if (dataObject instanceof POJO){
//do POJO things
}
return null;
}
};
添加回答
举报