Java内部类设计的优点
在java中,可以有内部类。从设计的角度来看,我很好奇这是否有什么好处 我最初的想法是,在类中有一个单独的文件可以更清晰地将事物分割成可重用的模块。通过这样做,如果其他类希望使用该其他类,它们也可以创建自己的实例。在我看来,避免内部类可能是更好的可扩展性和代码重用设计,在处理新项目时,通常很难判断类是否会被重用。。。因此,我觉得支持单独上课是一种方式Java内部类设计的优点,java,inner-classes,Java,Inner Classes,在java中,可以有内部类。从设计的角度来看,我很好奇这是否有什么好处 我最初的想法是,在类中有一个单独的文件可以更清晰地将事物分割成可重用的模块。通过这样做,如果其他类希望使用该其他类,它们也可以创建自己的实例。在我看来,避免内部类可能是更好的可扩展性和代码重用设计,在处理新项目时,通常很难判断类是否会被重用。。。因此,我觉得支持单独上课是一种方式 我问这个问题是因为我接手了一个项目,这个项目有很多这样的。。。这让我觉得以前的开发人员可能只是懒惰或不熟悉IDE。但我想确保我没有错过这些内部类所
我问这个问题是因为我接手了一个项目,这个项目有很多这样的。。。这让我觉得以前的开发人员可能只是懒惰或不熟悉IDE。但我想确保我没有错过这些内部类所具有的任何好处。如果有好处,可以让我知道,然后我可以确认以前的开发人员是否利用了这些好处。内部类对于:
我想到的内部类的一个好用法是将迭代器实现隐藏到
私有内部类中。只能通过调用列表对象上的iterator()
或listIterator()
来创建它们
这样,ArrayList
的Iterator
和ListIterator
实现与它们的相关类和方法一起分组,以增强可读性(实现非常简短),但对其他实现是隐藏的
它们不能声明为静态
,因为它们需要访问其封闭的实例对象
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable {
...
public Iterator<E> iterator() {
return new Itr();
}
private class Itr implements Iterator<E> {
...
}
public ListIterator<E> listIterator() {
return new ListItr(0);
}
private class ListItr extends Itr implements ListIterator<E> {
...
}
}
公共类ArrayList扩展了AbstractList
实现列表、随机访问、可克隆、java.io.Serializable{
...
公共迭代器迭代器(){
返回新的Itr();
}
私有类Itr实现迭代器{
...
}
公共ListIterator ListIterator(){
返回新的ListItr(0);
}
私有类ListItr扩展了Itr实现ListIterator{
...
}
}
当内部类不在包含类之外使用时,它们是好的-这是一种减少类膨胀的方法。一般来说,这是我唯一一次使用它们
非静态内部类还可以访问包含实例的私有字段 非静态内部类:
1) 内部类将用于在外部类上执行某些任务,并返回输出
。因此,它将确保创建外部类对象以访问它。
2) 内部类只针对外部类,对外部世界没有任何用处。因此,无需考虑代码重用。
e、 g_1)内部类的最佳示例是集合框架的iterator
实现。Set(AbstractCollection.java)和List(AbstractList.java)将使用不同的迭代器内部类实现
->我们可以重用内部类代码。例如,java.util.AbstractList
中的私有类Itr
innerclass的实现被Arraylist和Vector使用。
静态内部类:
1) 静态内部类不依赖于外部类对象;但它是特定于外部类级别的。它不会暴露于standalone,因为它只特定于外部类。所以没有代码重用
2) 它有一组对所有对象(类级别)通用(共享)的方法
(三)
e、 g_1)使用静态内部类检索Sigleton对象
e、 g_2)生成器模式
e、 类的g_3)比较器实现
内部类是非常重要的事情,它可以帮助您非常整洁地实现封装需求,您的基类也可以继承许多类(例如实现抽象处理程序)。每个程序员都可以学习如何在Java中使用内部类,这是一件非常有用的事情。你真的是指内部类还是[静态]嵌套类?首先,内部类可以访问外部类的成员,所以有时它可以帮助对象/类的封装(避免不必要的getter和setter)。他们在做内部类,但我也欢迎任何关于静态嵌套类的评论。例如,生成器模式是基于内部类的。Guava也经常使用它们发现了一些有趣的东西,有效的Java Ch.4第22项对静态成员类、非静态memeber类、匿名类和本地类进行了很好的分解。我遇到的问题是一个文件似乎有10个这样的,所以文件很长,我发现将分类分开似乎让我更容易阅读…测试有什么好处或坏处吗?常识总是适用的。如果一个类有10个内部类,那么很可能这个类有太多的事情要做,应该分成不同的类。这对于任何“看起来太长”的类都是正确的,不管内部类的数量如何。