接口 java 中的实例初始值设定项
Instance initializer in interface java
嘿,我想知道是否可以在创建实现器时对接口进行一些初始化。就像抽象中的空白构造函数 class.
我试过这样的事情:
public interface State {
{
//Do something.
}
public void render();
public void tick();
}
但它不允许您拥有实例初始化器。有什么办法吗?可能有一个内部 class?
所以想法是当创建一个实现对象的新实例时自动调用一段代码。
你不能这样做,接口不能定义初始化程序。
接口基本上是方法签名的列表。
界面中不能有静态块或实例块。但是从 java 8 开始,您可以使用静态方法和默认方法。
public interface MyData {
default void print(String str) {
if (!isNull(str))
System.out.println("MyData Print::" + str);
}
static boolean isNull(String str) {
System.out.println("Interface Null Check");
return str == null ? true : "".equals(str) ? true : false;
}
}
接口不是那样工作的,它是方法签名的列表,必须在实现接口的 class 中实现的方法。为此,您需要 class 而不是接口。
对于这样的事情有一个可能的解决方案,从 Java 8 你可以在你的接口中创建静态和默认方法,这允许你在接口中创建带有主体的方法。
嘿,我想知道是否可以在创建实现器时对接口进行一些初始化。就像抽象中的空白构造函数 class.
我试过这样的事情:
public interface State {
{
//Do something.
}
public void render();
public void tick();
}
但它不允许您拥有实例初始化器。有什么办法吗?可能有一个内部 class?
所以想法是当创建一个实现对象的新实例时自动调用一段代码。
你不能这样做,接口不能定义初始化程序。
接口基本上是方法签名的列表。
界面中不能有静态块或实例块。但是从 java 8 开始,您可以使用静态方法和默认方法。
public interface MyData {
default void print(String str) {
if (!isNull(str))
System.out.println("MyData Print::" + str);
}
static boolean isNull(String str) {
System.out.println("Interface Null Check");
return str == null ? true : "".equals(str) ? true : false;
}
}
接口不是那样工作的,它是方法签名的列表,必须在实现接口的 class 中实现的方法。为此,您需要 class 而不是接口。 对于这样的事情有一个可能的解决方案,从 Java 8 你可以在你的接口中创建静态和默认方法,这允许你在接口中创建带有主体的方法。