将类作为参数传递给方法,然后调用静态方法

金迪尔

我有一个用例,其中的一个类存在于2个版本的软件包中。

package packageV1;

public class MyClass extends BaseClass{

 public static String example(){
      return "Version1";
    }
}
package packageV2;

public class MyClass extends BaseClass{

 public static String example(){
     return "Version2";
      }
}

到目前为止一切顺利(我相信)。

然后,我有一个使用该类的应用程序,并且为了避免针对不同的软件包版本重写应用程序,我想将应使用的类(即,用于感兴趣的软件包)作为应用程序的参数传递。所以像

public class Application{
      
      private Class<BaseClass> selectedClass;

      public void Application(Class<BaseClass> selectedClass){
               this.selectedClass = selectedClass;
               this.selectedClass.example();  // not possible
               }

}

我相信我可以在构造函数this.selectedClass.example();中传递实例时MyClass调用,但是然后我将通过实例对象调用静态方法,不是很好吗?

另一方面,在上面的示例中,selectedClass是一个Class对象,因此我不能example像上面那样调用静态方法

这是否意味着我应该使用反射?喜欢selectedClass.getMethod(name, parameterTypes)对我来说看起来太复杂了。

还是有更好的设计?

汤姆·霍顿-大头钉

@javadev是正确的。使用反射几乎总是一个非常糟糕的主意。过度复杂的是它。

这里不需要反思。在实例上调用静态方法的能力很快被认为是设计错误。如此之多,以至于随后出现了高度不正交的设计选择,因为它不适用于作为接口成员的静态方法。

一种简单的解决方案是将静态方法移动到无状态对象的实例方法。Class,或其他必要的反思。这是策略设计模式的一种应用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#将类作为参数传递给方法,并在其中调用静态方法

来自分类Dev

C#将类作为参数传递给方法,并在其中调用静态方法

来自分类Dev

当静态类方法可调用时,将参数传递给静态类方法的适当方法是什么?

来自分类Dev

如何将非静态方法从特定类作为参数传递给Function

来自分类Dev

(C ++)将'this'传递给静态方法作为默认参数

来自分类Dev

将内联构造的类作为类参数传递给方法

来自分类Dev

将内联构造的类作为类参数传递给方法

来自分类Dev

如何将属性作为参数传递给在类上调用的方法?

来自分类Dev

将枚举类作为参数传递给Java中的方法

来自分类Dev

如何将类作为可选参数传递给方法?

来自分类Dev

将方法作为参数传递给PHP

来自分类Dev

将函数作为参数传递给方法

来自分类Dev

将静态方法作为参数传递给Kotlin中的另一个方法

来自分类Dev

将实例作为参数传递给静态方法的字节预算委派实例方法

来自分类Dev

将方法参数传递给类

来自分类Dev

将类方法作为函数参数传递

来自分类Dev

将类型参数作为类型参数的类传递给Java中的泛型方法

来自分类Dev

将类型参数作为类型参数的类传递给Java中的泛型方法

来自分类Dev

C ++:将类作为参数传递给其他类的方法

来自分类Dev

将类的方法作为参数传递给C ++中的另一个类

来自分类Dev

将参数传递给 DAL 方法中的存储过程的类中的调用方法

来自分类Dev

C ++将方法的指针数组作为参数传递给方法

来自分类Dev

如何将链表作为参数传递给方法,以及如何调用它?

来自分类Dev

将函数和参数作为参数传递给中间函数,然后调用命名函数

来自分类Dev

将函数作为参数传递给派生类的父方法

来自分类Dev

C#将通用类作为参数传递给自定义方法

来自分类Dev

将ArrayList <SomeClass>作为参数ArrayList <Comparable>传递给单独类中的方法

来自分类Dev

使用基类将继承组件作为参数传递给方法

来自分类Dev

Python,如何将函数作为参数传递给类方法

Related 相关文章

  1. 1

    C#将类作为参数传递给方法,并在其中调用静态方法

  2. 2

    C#将类作为参数传递给方法,并在其中调用静态方法

  3. 3

    当静态类方法可调用时,将参数传递给静态类方法的适当方法是什么?

  4. 4

    如何将非静态方法从特定类作为参数传递给Function

  5. 5

    (C ++)将'this'传递给静态方法作为默认参数

  6. 6

    将内联构造的类作为类参数传递给方法

  7. 7

    将内联构造的类作为类参数传递给方法

  8. 8

    如何将属性作为参数传递给在类上调用的方法?

  9. 9

    将枚举类作为参数传递给Java中的方法

  10. 10

    如何将类作为可选参数传递给方法?

  11. 11

    将方法作为参数传递给PHP

  12. 12

    将函数作为参数传递给方法

  13. 13

    将静态方法作为参数传递给Kotlin中的另一个方法

  14. 14

    将实例作为参数传递给静态方法的字节预算委派实例方法

  15. 15

    将方法参数传递给类

  16. 16

    将类方法作为函数参数传递

  17. 17

    将类型参数作为类型参数的类传递给Java中的泛型方法

  18. 18

    将类型参数作为类型参数的类传递给Java中的泛型方法

  19. 19

    C ++:将类作为参数传递给其他类的方法

  20. 20

    将类的方法作为参数传递给C ++中的另一个类

  21. 21

    将参数传递给 DAL 方法中的存储过程的类中的调用方法

  22. 22

    C ++将方法的指针数组作为参数传递给方法

  23. 23

    如何将链表作为参数传递给方法,以及如何调用它?

  24. 24

    将函数和参数作为参数传递给中间函数,然后调用命名函数

  25. 25

    将函数作为参数传递给派生类的父方法

  26. 26

    C#将通用类作为参数传递给自定义方法

  27. 27

    将ArrayList <SomeClass>作为参数ArrayList <Comparable>传递给单独类中的方法

  28. 28

    使用基类将继承组件作为参数传递给方法

  29. 29

    Python,如何将函数作为参数传递给类方法

热门标签

归档