Java 如何实现类似于;“抽象静态”;领域

Java 如何实现类似于;“抽象静态”;领域,java,Java,我创建了一个抽象类包含一个带有实现的方法。子类调用此方法以填充列表,该列表应在每个单独子类的所有实例之间共享(如抽象静态字段,该字段对于每个子类都是不同的和静态的)。问题是:抽象静态字段不存在,那么我如何才能实现这种行为 对于上下文,抽象类上的实现方法用于通过包从非限定名称解析类。这个方法调用一个abstract方法来获取要反映的包,它只返回一个字符串[](因为子类将要在不同的包中搜索)。然后,此方法生成一个映射字段的抽象静态没有等价物: 实例字段不能是抽象的。这真的毫无意义摘要意味着我们将一

我创建了一个
抽象类
包含一个带有实现的方法。子类调用此方法以填充列表,该列表应在每个单独子类的所有实例之间共享(如
抽象静态
字段,该字段对于每个子类都是不同的和静态的)。问题是:
抽象静态
字段不存在,那么我如何才能实现这种行为


对于上下文,
抽象类
上的实现方法用于通过包从非限定名称解析类。这个方法调用一个
abstract
方法来获取要反映的包,它只返回一个
字符串[]
(因为子类将要在不同的包中搜索)。然后,此方法生成一个
映射字段的
抽象静态
没有等价物:

  • 实例字段不能是抽象的。这真的毫无意义<代码>摘要
意味着我们将一些细节推迟到子类。但是对于一个实例字段来说,延迟没有任何意义

  • 静态
    字段无论如何都不会被继承,因此无法多态使用<代码>静态不同类中具有相同名称的字段是不同的变量

  • 当然,您可以使用反射来测试字段(静态或实例)是否已声明。。。但这在Java中不是
    抽象的意思

    解决方案:

    • 如果希望实例字段存在于
      抽象
      类的所有子类中,请将其声明为
      抽象
      类中的常规字段

    • 如果您想在所有子类中都存在一个
      static
      字段,那么您别无选择,只能在每个子类中显式声明它。您将无法以多态方式使用它/它们


      • 对于以下字段,
        抽象静态
        没有等价物:

        • 实例字段不能是抽象的。这真的毫无意义<代码>摘要
    意味着我们将一些细节推迟到子类。但是对于一个实例字段来说,延迟没有任何意义

  • 静态
    字段无论如何都不会被继承,因此无法多态使用<代码>静态不同类中具有相同名称的字段是不同的变量

  • 当然,您可以使用反射来测试字段(静态或实例)是否已声明。。。但这在Java中不是
    抽象的意思

    解决方案:

    • 如果希望实例字段存在于
      抽象
      类的所有子类中,请将其声明为
      抽象
      类中的常规字段

    • 如果您想在所有子类中都存在一个
      static
      字段,那么您别无选择,只能在每个子类中显式声明它。您将无法以多态方式使用它/它们


    我的想法:如果你想让你的子类拥有各自的静态字段,最好在它们中声明这些静态字段,而不是这个
    抽象类

    据我所知,您的
    抽象类实际上只是这个实现方法的占位符。您的子类是否覆盖了父类中的任何内容?如果不是,也许它不需要是一个抽象类


    另外,您的
    抽象类是否需要任何状态?因为如果不是这样,您可能会更好:将
    抽象类
    更改为
    静态类
    ,实现的方法为
    静态
    方法,该方法接受“ClassName”参数。然后在您的子类中,您可以使用类似于
    MyStaticClass的东西,直接使用子类的静态字段调用该方法。NSClassFromString(subclassStaticField)

    我的想法:如果您希望您的子类拥有各自的静态字段,最好只在其中声明这些静态字段,而不是在这个
    抽象类中声明这些静态字段

    据我所知,您的
    抽象类实际上只是这个实现方法的占位符。您的子类是否覆盖了父类中的任何内容?如果不是,也许它不需要是一个抽象类


    另外,您的
    抽象类是否需要任何状态?因为如果不是这样,您可能会更好:将
    抽象类
    更改为
    静态类
    ,实现的方法为
    静态
    方法,该方法接受“ClassName”参数。然后在您的子类中,您可以使用类似于
    MyStaticClass的东西,直接使用子类的静态字段调用该方法。NSClassFromString(subclassStaticField)

    谢谢您的回答。为了提供更多的上下文,使用
    抽象类
    存储一个枚举、两个实例字段和一个
    抽象
    实例方法。我已经为您复制粘贴了
    抽象类
    以及一个示例子类(查看注释了解用法示例)。我想我正试图像使用Swift协议一样使用
    抽象类
    ,但我可以看到Java中的工作方式有点不同。根据要点,你认为
    抽象类
    是最好的方法吗?谢谢你的回答。为了提供更多的上下文,使用
    抽象类
    存储一个枚举、两个实例字段和一个
    抽象
    实例方法。我已经为您复制粘贴了
    抽象类
    以及一个示例子类(查看注释了解用法示例)。我想我正试图像使用Swift协议一样使用
    抽象类
    ,但我可以看到Java中的工作方式有点不同。基于gi