この質問は、私のニーズがそのドメインに存在するという点で Android に関連していますが、質問は依然として Java 全体に適用されます。Activity
ここでは、FragmentActivity
、 、 などの Android 用語を使用しListActivity
ます...
アプリケーション全体で使用する必要がある機能を含む抽象基本クラスを実装する必要があります。より具体的には、すべてActivity
がこの機能を使用する必要がありますが、基本クラスによって自動的に処理されるようにしたいと考えています。私の問題は、アプリケーション内に 、Activity
、FragmentActivity
および などのさまざまな種類のアクティビティがありListActivity
、それらはすべて拡張されていることですActivity
(もちろんマイナスActivity
)。
基本クラスのコードは の各実装でまったく同じでActivity
あるため、コードの重複を回避し、各タイプの基本クラスを作成する必要があることを回避する方法はありActivity
ますか?
私が避けようとしているもの:
public abstract class BaseActivity extends Activity
{
public void onCreate(Bundle savedBundle)
{
// code goes here, will be the exact same for all these base classes
}
}
public abstract class BaseFragmentActivity extends FragmentActivity
{
public void onCreate(Bundle savedBundle)
{
// code goes here, will be the exact same for all these base classes
}
}
public abstract class BaseListActivity extends ListActivity
{
public void onCreate(Bundle savedBundle)
{
// code goes here, will be the exact same for all these base classes
}
}
public class MyMainActivity extends BaseActivity
{
}
public class MyUserList extends BaseListActivity
{
}
public class SomeActivityThatNeedsToBeAFragment extends BaseFragmentActivity
{
}
次のようなものを使用して、これにジェネリックを利用しようとしていました
public abstract class BaseActivity<T extends Activity> extends T
しかし、明らかにそれはうまくいきません。または多分私はそれを間違っているだけです。このコードの再利用を達成し、重複を回避する方法はありますか、それとも単にコードの複製に固執しているだけですか?
ありがとう!