假设我有一个带有抽象类的库,该类具有抽象方法:
public abstract class MyAbstractClass{
public void myMethod(){
int a = doSomething("hi");
}
public abstract void doSomething(String param);
}
现在我决定为方法添加一个参数,但我想保留旧方法的功能以保持旧代码可用:
public void myMethod(){
int a = ?
}
/**
* @deprecated use doSomething(String, String) instead.
*/
@Deprecated
public int doSomething(String param){ return doSomething(param, null); }
public abstract int doSomething(String param, String secondParam);
myMethod
在这种情况下我将如何实现我的?
Android 支持库中的PagerAdapter
类实际上有类似这样的结构,但反过来:
public Object instantiateItem(ViewGroup container, int position) {
return instantiateItem((View) container, position);
}
/**
* @deprecated Use {@link #instantiateItem(ViewGroup, int)}
*/
public Object instantiateItem(View container, int position) {
throw new UnsupportedOperationException(
"Required method instantiateItem was not overridden");
}
应该劝阻这种行为吗?如果我要使用这种结构,我怎么知道要调用什么方法?