Java 在接口中嵌套类在哪里有用?

Java 在接口中嵌套类在哪里有用?,java,interface,nested-class,Java,Interface,Nested Class,在哪种情况下,接口可以有嵌套类 以下代码是允许的且有效 public interface Iface { void show(); class ifaceClass { int x; public ifaceClass() { System.out.println(x); } } } 我也在努力使类对象成为ifaceClass 编辑: 我能做出这样的物体 public class Test i

在哪种情况下,接口可以有嵌套类

以下代码是允许的且有效

public interface Iface {

    void show();

    class ifaceClass {
        int x;

        public ifaceClass() {
            System.out.println(x);
        }
    }
}
我也在努力使类对象成为ifaceClass

编辑:

我能做出这样的物体

public class Test implements Iface {    

    public static void main(String[] args){
        ifaceClass  ifaceClassObj = new ifaceClass();
    }

    public void show() {    

    }
}
我注意到如果
Test
没有实现
Iface
,那么我需要以下导入

import com.jls.Iface.ifaceClass;
但它归结为同一个问题,为什么不把它当作另一个类来使用呢


这种方法的区别或附加值是什么?

您可以在实现
Iface
的类中创建
ifaceClass
的实例:

interface Iface {
    void show();
    class ifaceClass {
        int x;
        public ifaceClass() {
            System.out.println(x);
        }
    }
}

public class Test implements Iface {

    public static void main(String args[]) {
        ifaceClass iface = new ifaceClass();
    }

    @Override
    public void show() {
        // ...
    }
}
如果类没有实现接口,只需创建如下实例:

Iface.ifaceClass iface = new Iface.ifaceClass();
为什么要在接口内创建类?基本上出于相同的原因,您在另一个类中创建了一个类,以将相关类分组在一起

在接口中嵌套类在哪里有用

不存在这样的情况,只能通过接口的内部类来实现。在接口中包含内部类在语法上是有效的,对于实现接口的类来说,接口可以创建类的实例,除了接口之外。类也可以使该类可访问,因为它根本不能是私有的

我注意到如果测试没有实现Iface,那么我需要 以下导入
导入com.jls.Iface.ifaceClass

不一定,如果您的接口是可访问的,那么您的内部类将自动变得可访问。在这里,您尝试直接访问类,而无需导入
接口
,在这种情况下,下面的语句需要上面的导入语句

ifaceClass  ifaceClassObj = new ifaceClass();
但它归结为同样的问题,为什么不把它作为一个公正的工具呢 另一节课。这有什么区别或附加值 接近

确切地说,创建另一个类也可以为您提供相同的功能,而且我在日常编程中从未见过任何用例,这些用例只能通过接口的内部类来实现。它只提供通过接口的可访问性

我用过一次,但我认为这是一个很糟糕的做法。有一天,我们需要在实现接口的不同类中实现一个通用方法,比如说
X
,我们想添加一个额外的方法供所有这些类使用,以添加对
对象的一种检查,该检查只检查一些参数并返回
布尔值
,即使可以满足该用例另一方面,但具体来说,它仅用于实现此接口的类,我们在接口中添加了类,以便我们可以为实现类提供该方法。(注意:现在,在这种情况下可以使用默认方法,而不是内部类)


在这里,明智的做法是,在大型项目中,任何人(除了创建者)都不可能注意到任何接口都有内部类。因此,在我们实现该类或手动检查接口之前,我们无法知道接口具有内部类。

无论何时,只要您想确保实现您的接口的类能够访问具有特定实现的所述类。您的意思是它在哪里有用?一个接口总是可以有嵌套类…我建议你编辑你的问题,然后实际提问。请检查这个和这个@SubodhJoshi链接帮助。我的问题还要求让我知道如何调用类方法。