Java 如何实现类似于;“抽象静态”;领域
我创建了一个Java 如何实现类似于;“抽象静态”;领域,java,Java,我创建了一个抽象类包含一个带有实现的方法。子类调用此方法以填充列表,该列表应在每个单独子类的所有实例之间共享(如抽象静态字段,该字段对于每个子类都是不同的和静态的)。问题是:抽象静态字段不存在,那么我如何才能实现这种行为 对于上下文,抽象类上的实现方法用于通过包从非限定名称解析类。这个方法调用一个abstract方法来获取要反映的包,它只返回一个字符串[](因为子类将要在不同的包中搜索)。然后,此方法生成一个映射字段的抽象静态没有等价物: 实例字段不能是抽象的。这真的毫无意义摘要意味着我们将一
抽象类
包含一个带有实现的方法。子类调用此方法以填充列表,该列表应在每个单独子类的所有实例之间共享(如抽象静态
字段,该字段对于每个子类都是不同的和静态的)。问题是:抽象静态
字段不存在,那么我如何才能实现这种行为
对于上下文,
抽象类
上的实现方法用于通过包从非限定名称解析类。这个方法调用一个abstract
方法来获取要反映的包,它只返回一个字符串[]
(因为子类将要在不同的包中搜索)。然后,此方法生成一个映射字段的抽象静态
没有等价物:
- 实例字段不能是抽象的。这真的毫无意义<代码>摘要
意味着我们将一些细节推迟到子类。但是对于一个实例字段来说,延迟没有任何意义
静态
字段无论如何都不会被继承,因此无法多态使用<代码>静态不同类中具有相同名称的字段是不同的变量
抽象的意思
解决方案:
- 如果希望实例字段存在于
抽象
类的所有子类中,请将其声明为抽象
类中的常规字段
- 如果您想在所有子类中都存在一个
static
字段,那么您别无选择,只能在每个子类中显式声明它。您将无法以多态方式使用它/它们
对于以下字段,
抽象静态
没有等价物:
- 实例字段不能是抽象的。这真的毫无意义<代码>摘要
意味着我们将一些细节推迟到子类。但是对于一个实例字段来说,延迟没有任何意义
静态
字段无论如何都不会被继承,因此无法多态使用<代码>静态不同类中具有相同名称的字段是不同的变量
抽象的意思
解决方案:
- 如果希望实例字段存在于
抽象
类的所有子类中,请将其声明为抽象
类中的常规字段
- 如果您想在所有子类中都存在一个
static
字段,那么您别无选择,只能在每个子类中显式声明它。您将无法以多态方式使用它/它们
我的想法:如果你想让你的子类拥有各自的静态字段,最好在它们中声明这些静态字段,而不是这个抽象类
据我所知,您的抽象类实际上只是这个实现方法的占位符。您的子类是否覆盖了父类中的任何内容?如果不是,也许它不需要是一个抽象类
另外,您的抽象类是否需要任何状态?因为如果不是这样,您可能会更好:将抽象类
更改为静态类
,实现的方法为静态
方法,该方法接受“ClassName”参数。然后在您的子类中,您可以使用类似于MyStaticClass的东西,直接使用子类的静态字段调用该方法。NSClassFromString(subclassStaticField)代码>我的想法:如果您希望您的子类拥有各自的静态字段,最好只在其中声明这些静态字段,而不是在这个抽象类中声明这些静态字段
据我所知,您的抽象类实际上只是这个实现方法的占位符。您的子类是否覆盖了父类中的任何内容?如果不是,也许它不需要是一个抽象类
另外,您的抽象类是否需要任何状态?因为如果不是这样,您可能会更好:将抽象类
更改为静态类
,实现的方法为静态
方法,该方法接受“ClassName”参数。然后在您的子类中,您可以使用类似于MyStaticClass的东西,直接使用子类的静态字段调用该方法。NSClassFromString(subclassStaticField)代码>谢谢您的回答。为了提供更多的上下文,使用抽象类
存储一个枚举、两个实例字段和一个抽象
实例方法。我已经为您复制粘贴了抽象类
以及一个示例子类(查看注释了解用法示例)。我想我正试图像使用Swift协议一样使用抽象类
,但我可以看到Java中的工作方式有点不同。根据要点,你认为抽象类
是最好的方法吗?谢谢你的回答。为了提供更多的上下文,使用抽象类
存储一个枚举、两个实例字段和一个抽象
实例方法。我已经为您复制粘贴了抽象类
以及一个示例子类(查看注释了解用法示例)。我想我正试图像使用Swift协议一样使用抽象类
,但我可以看到Java中的工作方式有点不同。基于gi