java - 实例化类的内部类

标签 java

基本上我有一个带有泛型 T 的 java 类 Foo 和一个内部类 Foo2,它以某种方式使用这个泛型 T,如下例所示:

public class Foo<T>
{
  public class Foo2
  {
    private T t;
    public void setObject(T t)
    {
       this.t = t;
    }
  }
}

在尝试和错误之后(直到编译器不抛出警告或错误)如何创建这个内部类 Foo2 的实例我想出了以下内容:

Foo<String> foo = new Foo<String>();
Foo2 foo2 = foo.new Foo2();

第二行 foo.new Foo2(); 对我来说是新的东西,我不知道我到底在做什么。对我来说,有点清楚,类 Foo2 的实例必须知道类 T 是什么,但语法 foo.new 对我来说是新的。我在这里做什么?

最佳答案

内部类是在不使用 static 关键字的情况下在另一个类中声明的类。内部类的实例必须属于外部类的实例。例如,内部类的一个很好的例子可能是

public class School {

    public class Pupil {

    }
}

每个 Pupil 都必须属于一个 School,因此您不能在没有学校的情况下构造一个 Pupil 实例。你可以做

School school = new School();
School.Pupil pupil = school.new Pupil();

第二行创建一个属于特定学校的新Pupil

Pupil 类中,您可以通过执行 School.this 获取学生所属的学校。您可以通过执行 School.this.someField 使用 School 类的字段。

如果你想在没有 Foo 实例的情况下创建 Foo2 实例,你可以这样写

public static class Foo2

相反。在大多数情况下,您可能应该优先使用静态嵌套类而不是内部类。

关于java - 实例化类的内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33721690/

相关文章:

Java try-finally 返回设计问题

java - 如何将 ImageView 固定到布局的底部?

java - 输入字符串的 NumberFormatException,困惑为什么?

Java float 许可证服务器 API?

java - 未捕获的异常 : java. lang.ClassNotFoundException:

Java for 循环未运行完整循环

JAVA:嵌套在公共(public)类的迭代器中

java - 在 Java Swing 中旋转 JLabel 和 ImageIcon

Java 代码到 Web 服务

java - 定义 : Unfinalized versus finalizable object