【发布时间】:2020-06-16 20:20:35
【问题描述】:
我有一个这样的界面:
public interface Byteable<T> {
byte[] toBytes();
T fromBytes(byte[] bytes);
}
顾名思义,它将对象转换为字节模式,并且可以从给定的字节数组重新创建对象(如果不是,则抛出某种异常)。 我喜欢 toBytes() 方法,它必须是非静态的,因为它只能应用于对象。但是我怎样才能创建一个静态方法以便我可以调用
ClassName.fromBytes(...);
如何确保实现接口的每个类都具有这两个功能,或者如何创建使用非静态fromBytes(...) 的静态方法?创建默认构造函数并执行类似的操作是一种好习惯
new ClassName().fromBytes();
有什么好的做法吗?我猜抽象类也不是解决方案,因为它不能有静态方法,对吗?
【问题讨论】:
-
您不能强制在实现中存在
static方法,但它为什么重要呢?当你想要ClassName中的staticfromBytes方法时,无论如何你都必须在ClassName中声明该方法,无论接口是否强制。对于执行ClassName.fromBytes(...);的调用者来说,接口是否声明方法没有区别。
标签: java interface abstract-class static-methods