需要的建议:JAVA接口中的静态方法
我有一个类正在处理将各种消息打印到控制台中,让我们调用这个类ConsoleMessages.java。这个类是公共的和抽象的,它的所有方法都是公共的和静态的 我想为这个类创建一个接口(我们称它为PrintMessages)。我的意思是,ConsoleMessages.java将实现PrintMessages 问题是,JAVA不支持接口中的静态方法需要的建议:JAVA接口中的静态方法,java,interface,methods,static,Java,Interface,Methods,Static,我有一个类正在处理将各种消息打印到控制台中,让我们调用这个类ConsoleMessages.java。这个类是公共的和抽象的,它的所有方法都是公共的和静态的 我想为这个类创建一个接口(我们称它为PrintMessages)。我的意思是,ConsoleMessages.java将实现PrintMessages 问题是,JAVA不支持接口中的静态方法 你建议我做什么 如果您发现自己需要在实用程序类上定义接口,那么是时候重新考虑您的设计选择了。您的ConsoleMessages类似乎已经超出了最初作为
你建议我做什么 如果您发现自己需要在实用程序类上定义接口,那么是时候重新考虑您的设计选择了。您的ConsoleMessages类似乎已经超出了最初作为“通用实用程序函数”的转储场地的使用范围
简短的回答?重构时间。如果您发现自己需要在实用程序类上定义接口,那么是时候重新考虑您的设计选择了。您的ConsoleMessages类似乎已经超出了最初作为“通用实用程序函数”的转储场地的使用范围 简短的回答?重构时间。
- 使用所需的方法创建
界面PrintMessages
- 使
成为实现该接口的类。将所有方法从静态更改为非静态ConsoleMessages
- 强制执行
实例化为一个实例。这可以通过多种方式实现,可以自己完成,也可以使用一个新的工具ConsoleMessages
- 使用所需的方法创建
界面PrintMessages
- 使
成为实现该接口的类。将所有方法从静态更改为非静态ConsoleMessages
- 强制执行
实例化为一个实例。这可以通过多种方式实现,可以自己完成,也可以使用一个新的工具ConsoleMessages
interface MyService
static public class Factory
static public MyService get(...)
return ...;
MyService service = MyService.Factory.get(args);
在接口中并没有针对静态方法的强烈争论。不会有坏事发生 接口可以有静态字段和静态成员类,因此可以通过它们附加静态方法,尽管需要一个额外的间接寻址
interface MyService
static public class Factory
static public MyService get(...)
return ...;
MyService service = MyService.Factory.get(args);
接口用于指定对象的方法(然后由某个类实现)。这里没有对象,因此不需要接口 静态方法只能使用确切的类名(或者某些子类的名称)来调用,使用接口来实现这一点是没有意义的 因此,您有两种选择:
- 扔掉你的接口,继续使用静态方法
- 使所有方法(或者至少是接口中应该包含的方法)成为非静态的,使实现类成为非抽象的。要调用它们,则需要类的对象(实现此接口)
- 扔掉你的接口,继续使用静态方法
- 使所有方法(或者至少是接口中应该包含的方法)成为非静态的,使实现类成为非抽象的。要调用它们,则需要类的对象(实现此接口)