Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法在现有继承树中插入自定义类?_Java_Android - Fatal编程技术网

Java 有没有办法在现有继承树中插入自定义类?

Java 有没有办法在现有继承树中插入自定义类?,java,android,Java,Android,我正在开发一个android应用程序,目前有两个活动,A和B,它们有一些共同的代码,它们的选项菜单和一些其他代码。为了减少复制和粘贴,我创建了一个名为BaseActivity的类,该类使用扩展活动,然后我使用a和B扩展BaseActivity。至少这是我想做的,但我遇到了一个问题。虽然A现在扩展BaseActivity很好,但我不知道如何使B扩展BaseActivity,因为它不仅是一个活动,而且是一个MapActivity。它的继承树如下所示: java.lang.Object andr

我正在开发一个android应用程序,目前有两个活动,A和B,它们有一些共同的代码,它们的选项菜单和一些其他代码。为了减少复制和粘贴,我创建了一个名为BaseActivity的类,该类使用扩展活动,然后我使用a和B扩展BaseActivity。至少这是我想做的,但我遇到了一个问题。虽然A现在扩展BaseActivity很好,但我不知道如何使B扩展BaseActivity,因为它不仅是一个活动,而且是一个MapActivity。它的继承树如下所示:

java.lang.Object
   android.content.Context
       android.content.ContextWrapper
           android.view.ContextThemeWrapper
               android.app.Activity
                  mypackage.BaseActivity
                     com.google.android.maps.MapActivity
MapActivity继承树:

java.lang.Object
   android.content.Context
       android.content.ContextWrapper
           android.view.ContextThemeWrapper
               android.app.Activity
                   com.google.android.maps.MapActivity
但为了让它继承我的代码,我需要让它看起来像这样:

java.lang.Object
   android.content.Context
       android.content.ContextWrapper
           android.view.ContextThemeWrapper
               android.app.Activity
                  mypackage.BaseActivity
                     com.google.android.maps.MapActivity

有没有办法在继承树中插入我的自定义类?

不行。很难说这里的最佳方法是什么,但我至少会尝试使用组合而不是继承。您能否实现一个单独的非活动对象并同时使用a和B中的一个?

不,您不能。很难说这里的最佳方法是什么,但我至少会尝试使用组合而不是继承。你能实现一个单独的非活动对象并使用a和B中的一个吗?

既然你的代码实际上是一个MapActivity,它应该扩展它(假设你不想进行合成)。如果您想进行合成,请使您的类具有对MapActivity的引用,这将允许您与该类交互。

因为您的代码实际上是一个MapActivity,所以它应该扩展它(假设您不想进行合成)。如果你想进行合成,请让你的类引用MapActivity,这将允许你与该类交互。

他确实应该使用合成,并在不同的类中创建共享UI和相关内容。然后,活动可以容纳该特定功能的成员。更简单、更干净的方法。他确实应该使用组合,在不同的类中创建共享UI和相关内容。然后,活动可以容纳该特定功能的成员。更简单、更干净的方法。