Questions tagged «inner-classes»

在面向对象编程(OOP)中,内部类或嵌套类是完全在另一个类或接口的主体内声明的类。但是,在Java中,内部类是非静态的嵌套类。


13
接口内的内部类
是否可以在接口内创建内部类? 如果可能的话,由于我们不打算创建任何接口对象,为什么还要创建一个内部类呢? 这些内部类在任何开发过程中都有帮助吗?

9
Java为什么禁止内部类中的静态字段?
class OuterClass { class InnerClass { static int i = 100; // compile error static void f() { } // compile error } } 虽然无法使用来访问静态字段OuterClass.InnerClass.i,但是如果我想记录一些应该是静态的内容(例如,创建的InnerClass对象的数量),则使该字段静态化将很有帮助。那么,为什么Java禁止内部类中的静态字段/方法呢? 编辑:我知道如何使编译器对静态嵌套类(或静态内部类)感到满意,但是我想知道的是为什么Java禁止从语言设计和内部类(或普通内部类)内部的静态字段/方法实施方面,如果有人对此有更多了解。

4
C#中的私有内部类-为什么它们不经常使用?
我是C#的新手,每次我开始从事C#项目时(我只从事C#中几乎成熟的项目),我想知道为什么没有内部类吗? 也许我不明白他们的目标。对我而言,内部类(至少是私有内部类)在很大程度上类似于Pascal / Modula-2 / Ada中的“内部过程”:为了简化理解,它们允许将主类分解为较小的部分。 示例:这是大多数时候看到的内容: public class ClassA { public MethodA() { <some code> myObjectClassB.DoSomething(); // ClassB is only used by ClassA <some code> } } public class ClassB { public DoSomething() { } } 由于ClassB仅(至少一段时间)将由ClassA使用,因此我的猜测是此代码可以更好地表示为: public class ClassA { public MethodA() { <some code> myObjectClassB.DoSomething(); // Class …


5
使用JUnit的内部类中的测试用例
我读到有关构造单元测试的内容,每个类都有一个测试类,每个方法都有一个内部类。认为这似乎是组织测试的便捷方法,因此我在Java项目中进行了尝试。但是,内部类中的测试似乎根本没有被采用。 我大致是这样做的: public class DogTests { public class BarkTests { @Test public void quietBark_IsAtLeastAudible() { } @Test public void loudBark_ScaresAveragePerson() { } } public class EatTests { @Test public void normalFood_IsEaten() { } @Test public void badFood_ThrowsFit() { } } } JUnit不支持此功能,还是我做错了?

3
“ object.new”如何工作?(Java是否有.new运算符?)
今天,我在阅读Accelerated GWT(Gupta)第151页时遇到了这段代码。 public static void getListOfBooks(String category, BookStore bookStore) { serviceInstance.getBooks(category, bookStore.new BookListUpdaterCallback()); } public static void storeOrder(List books, String userName, BookStore bookStore) { serviceInstance.storeOrder(books, userName, bookStore.new StoreOrderCallback()); } 那些新运营商在那里做什么?我从未见过这样的语法,有人可以解释吗? 有人知道在Java规范中的哪里可以找到它吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.