当前位置: 首页 > 面试题库 >

如何从内部类中引用封闭类?

慎懿轩
2023-03-14
问题内容

我正在扩展ArrayList来创建一个自定义ArrayList,可以在迭代它的同时使用常规ArrayList方法进行修改。为此,我还要创建一个迭代器。

public class SynchronizedList<E> extends ArrayList<E>
{
    // Fields here

    //Constructors and methods here

public class SynchronizedListIterator<E> implements Iterator<E>
{
    public int index;
    private E current;

    public boolean hasNext()
    {
        synchronized (/* reference to enclosing List object */) {
                    //code goes here
        }
        return false;
    }

    //more methods here
}
}

在我的hasNext()和next()方法期间,我需要确保列表没有被修改(可以在任何其他时间修改)。因此,我需要在我的shared()块中引用我的封闭类型。


问题答案:

EnclosingType.this。因此,在您的情况下,它将为SynchronizedList.this



 类似资料:
  • 问题内容: 我有一个内部类(非静态),该类在初始化时使用对封闭类的引用。内部类现在会保留对封闭类的引用吗? 更新 我非常清楚, 可以使用 引用外部类。 但是,如果该类不使用引用, 必须 参考是编译之后呢?即使仅在初始化中使用引用也有必要吗? 它在哪里说内部类 总是 持有对外部类的引用? 问题答案: 非静态嵌套类 始终 包含对封闭类的引用。在你的榜样,你可以从引用封闭类的。 JLS 8.1.3“内部

  • 我知道如果我想扩展内部类,我应该这样做: 但是在这种情况下,我不明白该怎么办?如何获取内部对象的封闭实例? 此变体不编译:

  • 我认为内部类的成员,即使被声明为私有的,也可以从它的封闭类中访问。但是我遇到了以下代码结构的编译时错误。我的顶级类实现了Iterable接口。Iterator在内部类中实现。当内部类的一个实例通过iterator()方法获得时,我无法使用该实例访问数据栏。 有什么建议吗?

  • 问题内容: 如何从匿名类的方法内部访问? 问题答案: 如何从匿名类的方法内部访问? 您只需要访问它们即可: 更重要的是:为什么这对您不起作用?

  • 在阅读java Doc时,我得到了以下东西。 内部类C是类O的直接内部类,如果O是C的直接词汇封闭类,并且C的声明不发生在静态上下文中 所以如果我写信 我的问题是在这两个内部类中,哪一个是O的直接内部类? 我也有一些观点。 2.如果类O是C的第n-1个词汇封闭类的直接封闭类,则它是C的第n个词汇封闭类。 3.类O的直接内部类C的实例i与O的实例关联,称为i的直接封闭实例。对象的直接封闭实例(如果有

  • 问题内容: 我正在使用Java 6。 我无法让内部类使用与其包含的类相同的泛型类。目前我有 现在我得到警告 类型参数T隐藏了类型T 如果我从内部类中删除类型参数(即从行中删除),则会在该行上出现编译错误。 我怎样才能使一切正确? 问题答案: 您可以: 从(即,使其成为非泛型的)中移除类型参数-仍然可以访问external 。 将class中的type参数重命名为(say)。 [更新] 下面是四种重