Here我遇到了这个短语:
Implementing a private interface is a way to force the definition of the methods in that interface without adding any type information (that is, without allowing any upcasting).
我发现很难理解这一点。 有人可以为我解释一下吗?
最佳答案
这是一个私有(private)接口(interface)的例子。
public class Main {
private interface Animal {
void makeNoise();
}
public static final class Cow implements Animal {
@Override
public void makeNoise() {
System.out.println("Moo!");
}
}
public static final class Sheep implements Animal {
@Override
public void makeNoise() {
System.out.println("Bah!");
}
}
public static void main(String[] args) {
List<Animal> animals = Arrays.asList(new Cow(), new Sheep());
for (Animal animal : animals)
animal.makeNoise();
}
}
在 Main
类中,您可以引用 Animal
并对其调用 makeNoise()
。因此,您可以拥有一个包含不同类型的 Animal
的 List
,并使用 for each 循环对它们全部调用 makeNoise()
。
但是,在 Main
类之外这是不可能的。你可以有一个 Cow
或一个 Sheep
并在其中一个上调用 makeNoise()
,但是接口(interface) Animal
和接口(interface)方法 makeNoise()
是不可见的。
关于java - 类中的私有(private)接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27579860/