Abh*_*ena 5 java interface nested-class
在哪种情况下接口可以嵌套类?
以下代码是允许且有效的.
public interface Iface {
void show();
class ifaceClass {
int x;
public ifaceClass() {
System.out.println(x);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我也在努力创建类ifaceClass的对象.
编辑:
我能够制作这样的物体
public class Test implements Iface {
public static void main(String[] args){
ifaceClass ifaceClassObj = new ifaceClass();
}
public void show() {
}
}
Run Code Online (Sandbox Code Playgroud)
我注意到如果Test没有实现Iface那么我需要在导入之后,
import com.jls.Iface.ifaceClass;
Run Code Online (Sandbox Code Playgroud)
但它归结为同样的问题,为什么不把它用作另一个类.
这种方法的差异或增值是什么?
在接口中嵌套类在什么地方有用?
不存在这种情况,只能通过接口内部类来实现。在接口中拥有内部类在语法上是有效的,并且对于实现接口的类可以创建类的实例,除此之外Interface.Class还可以使该类可访问,因为它根本不可能private。
我注意到如果测试没有实现 Iface 那么我需要以下导入
import com.jls.Iface.ifaceClass;
不一定,如果您的接口可访问,您的内部类将自动变得可访问。在这里,您尝试直接访问类,甚至无需导入interface以下语句需要上面的导入语句。
ifaceClass ifaceClassObj = new ifaceClass();
Run Code Online (Sandbox Code Playgroud)
但它归结为同样的问题,为什么不将它用作另一个类。这种方法有什么区别或附加值
确切地说,创建另一个类也可以为您提供相同的便利,并且我在日常编程中从未见过任何只能通过接口的内部类来实现的用例。除了通过接口的可访问性之外,它不提供任何其他内容。
我用过一次,但我认为这是一个很糟糕的做法。有一天,我们需要在实现接口的不同类中实现一种通用方法,并且X我们想添加一个额外的方法供所有此类使用,以添加一种检查,该检查Object仅检查某些参数并返回,boolean即使用例可以通过其他方式实现,但具体来说,它仅适用于实现此接口的类,我们在接口中添加了类,以便我们可以提供该方法来实现类。(注意:现在在这种情况下可以使用默认方法而不是内部类)
在这里,值得注意的是,在大型项目中,任何人(除了创建者之外)都不可能注意到任何接口都有内部类。因此,在我们实现该类或手动检查接口之前,我们无法知道接口有内部类。