说我有一个它有一个抽象方法的抽象类库:弃用的方法,但保持功能
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
?
的PagerAdapter
类在Android支持库有其实某种建筑这样的,但周围的其他方法:
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");
}
如果这种行为被鼓励?如果我要使用这种结构,我怎么知道要调用什么方法?
旧代码怎么会使用吗?您引入了一种新的抽象方法,打破了所有现有的子类。 – 2013-03-06 22:52:52
为什么你不能继续调用'doSomething(“hi”)'(带有抑制警告)或者只是调用'doSomething(“hi”,null)'? – 2013-03-06 22:53:04
你可以在'myMethod()'中调用新的'doSomething(String,String)'。 – shuangwhywhy 2013-03-06 22:54:50