說我有一個它有一個抽象方法的抽象類庫:棄用的方法,但保持功能
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