Tag: 内部类

Intellij提取内部类

如何使用IntelliJ或Android Studio提取公共静态内部类来创build新的顶级类? 谢谢。

在哪里放内部课程?

有些人可能会认为,这是所有时代最不重要的问题的候选人。 然而,代码风格对我来说是一个非常重要的话题,我想确保我以可读的方式编写代码 – 对于我和大多数开发人员。 这就是为什么我想知道你们在哪里宣布你的内部类。 我遵循以下方法sortingscheme,因为它是相当普遍的: public void foo() { usedByFoo(); } private void usedByFoo() { } public void bar() { } 我从上到下排列它们,每一种方法都与使用的地方相近。 现在我可以用内部类来做同样的事情,像这样: class Outer { private Inner inner; private class Inner {}; public Outer() { } … } 我认为这是我遵循的最一致的风格,但我也经常看到人们在文件的顶部或底部声明所有的内部类。 鉴于我的订购方法,我应该遵循哪种风格? 什么是最常见的方式来做到这一点?

为什么Java内部类需要“最终的”外部实例variables?

final JTextField jtfContent = new JTextField(); btnOK.addActionListener(new java.awt.event.ActionListener(){ public void actionPerformed(java.awt.event.ActionEvent event){ jtfContent.setText("I am OK"); } } ); 如果我省略了final , 则会看到错误“ 不能引用在不同方法中定义的内部类中的非最终variablesjtfContent ”。 为什么匿名内部类需要外部类实例variables是最终的才能访问?

用于实例化内部类的奇怪语法

在这个阶段,我没有想到我会在Java中遇到全新的语法,但是你看,我刚刚遇到了一些事情: 确切的上下文和下面的代码应该做什么是非常不相干的 – 它只是为了给某种上下文。 我试图在IT Mill Toolkit中综合创build一个事件,所以我写了这样一行: buttonClick(new Button.ClickEvent(button)); 但是,Eclipse给我以下错误信息: 没有封闭types的Button实例可以访问。 必须使用封闭的Buttontypes实例来限定分配(egxnew A(),其中x是Button的一个实例)。 当我重写上面的行,如下所示,它不再抱怨: buttonClick(button.new ClickEvent(button)); // button instanceof Button 所以,我的问题是: 后面的语法究竟是什么意思,为什么不是第一个片段的工作? Java抱怨什么,第二个版本在做什么? 背景信息: Button和Button.ClickEvent都是非抽象的公共类。

从嵌套类访问封闭类中字段的最佳方法是什么?

说如果我有一个窗体中的下拉列表,并且在这个类中有另一个嵌套的类。 现在从嵌套类访问这个下拉菜单的最好方法是什么?

方法本地内部类与内部类

下面的代码产生输出middle 。 任何人都可以详细解释这是怎么发生的? 是否因为class A的“内部”版本的声明是在go()方法中创buildclass A的实例之后发生的? class A { void m() { System.out.println("outer"); } } public class MethodLocalVSInner { public static void main(String[] args) { new MethodLocalVSInner().go(); } void go() { new A().m(); class A { void m() { System.out.println("inner"); } } } class A { void m() { System.out.println("middle"); } } }

为什么我不能在Java的内部类中创build一个枚举?

我试图做的是这样的: public class History { public class State { public enum StateType { Eclipse在StateType上给我这个编译错误: The member enum StateType must be defined inside a static member type 。 当我使State类为静态时,错误消失。 我可以使State静态,但我不明白为什么我不能在内部类中声明一个enum 。

为什么嵌套的子类可以访问其父类的私有成员,但是孙子们不能?

可能类似于这个问题, 为什么外部Java类可以访问内部类私有成员? 或者在子类中使用super关键字访问超类专用字段 。 但是有一些不同之处:子类可以访问父类(也就是最近的父类)的私有成员。 鉴于下面的示例代码: public class T { private int t; class T1 { private int t1; public void test() { System.out.println(t); } } class T2 extends T1 { private int t2; public void test() { System.out.println(t); System.out.println(super.t1); System.out.println(this.t2); } } class T3 extends T2 { public void test() { System.out.println(t); System.out.println(super.t1); // […]

在python中从内部类访问外部类

我有这样的情况 class Outer(object): def some_method(self): # do something class Inner(object): def __init__(self): self.Outer.some_method() # <– this is the line in question 我如何从Inner类访问Outer类的方法? 编辑 – 感谢您的答复。 我得出结论,我需要重新评估我是如何devise这个实现的,并提出一个更强大的方法。

如何从内部类访问外部类的“this”?

是否有可能在Java内部类中获得this的引用? 即 class Outer { void aMethod() { NewClass newClass = new NewClass() { void bMethod() { // How to I get access to "this" (pointing to outer) from here? } }; } }