接口中的实例初始化器(Instance initializer)Java

4

嘿,我想知道是否有可能在创建实现者时为接口提供一些初始化。就像抽象类中的空构造函数。

我尝试了以下内容:

public interface State {

{
//Do something.
}

public void render();
public void tick();
}

但它不允许你拥有实例初始化程序,有没有什么办法可以做到这一点?可能需要使用内部类吗?
因此,这个想法是当一个实现对象的新实例被创建时,自动调用一段代码。
3个回答

4

在接口中不能有静态或实例块。但是从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;
  }
}

是的,但是这个想法是当一个实现对象的新实例被创建时自动调用一段代码。 - Llewv

3

你不能这样做,接口无法定义初始化器。

接口基本上是方法签名的列表。


第二个陈述不再正确,因为Java8在接口中添加了方法的默认实现。 - Sanjeev
此外,您可以声明字段(它们会自动变为“static final”)。 - fabian

0
一个接口不是那样工作的,它是一系列方法签名的列表,这些方法必须在实现接口的类中实现。为此,您需要一个类而不是接口。 对于这种情况有一个可能的解决方案,从Java 8开始,您可以在接口中创建静态和默认方法,这允许您在接口中创建带有主体的方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接