代码之家  ›  专栏  ›  技术社区  ›  Gordon Gustafson

我什么时候应该使用/嵌套类的例子?

  •  2
  • Gordon Gustafson  · 技术社区  · 15 年前

    请重新标记此问题以包括与之相关的语言

    因此,我的Java书上有一个嵌套类的完整章节,但最后的注释是,在“建模组合关系和实现要隐藏的类的内部结构”时,只需要使用它们。所以,让我们讨论一下何时需要使用嵌套类和一些示例。

    3 回复  |  直到 15 年前
        1
  •  3
  •   RMorrisey    15 年前

    嵌套类/内部类只是一个仅在另一个类的上下文中专门使用的类,该类没有自己的类文件。如果它链接到实例,则只能在父类实例的上下文中进行实例化;如果它是静态类,则只能看到私有数据,如果它是静态类,则只能看到私有静态数据。

    Java开发者站点有一个嵌套类教程,有一个例子: http://java.sun.com/docs/books/tutorial/java/javaOO/nested.html

    几个使用示例:

    • 隐藏 接口:

    (想到类似hibernate的工具的数据库会话):假设您有一个会话接口和一个sessionFactory,它返回一个会话实例。实现会话接口的sessionimpl具体类可以是工厂的内部类,它知道如何构造和初始化会话接口。

    • 通过实施 接口:

    在Wicket Web框架中,每个GUI组件都有一个关联的“模型”,其任务是将数据连接到组件。界面看起来像:

    public interface IModel extends IDetachable {
     public Object getObject();
     public Object setObject();
    }
    

    假设您有一些特殊的逻辑来检索您所编写的自定义GUI组件的数据。由于没有其他组件以相同的方式检索数据,因此可以在提供IModel的地方使用匿名类来处理数据检索。如果在同一个类中有另一个点需要重用IModel实现,则可以将其作为内部类。稍后,如果您在其他地方需要该模型,可以将其转换为顶级类。

    通常,在需要类定义的情况下使用内部类,但该类只在父类的上下文中可用或有意义。

        2
  •  3
  •   Amirshk    15 年前

    我对嵌套类的实际使用是在全局设置对象中。

    父类是一个单独的类,嵌套类作为设置类别。

    • 设置
      • 文件设置
      • 打印设置
      • 等。

    将内部对象作为单独的类是没有实际意义的,因为它们在设置类范围之外对它们没有用处。

        3
  •  2
  •   Domagoj Peharda    15 年前

    我使用嵌套类来封装通常作为带有大量参数的方法进行的算法。我使用具有原始数据的类,并将算法放入嵌套类中的单独文件中(使用分部关键字)。这样,在算法完成后,我可以将该算法及其(工作)数据的属性保存下来。 我知道不使用嵌套类很容易做到这一点,但这感觉是正确的,因为算法是专门为父类构建的。

       public partial class Network
        {
                partial void initFDLF()
                {
                    fdlf=new FDLF(this);
                }
    
            public FDLF fdlf;
            public class FDLF
            {
                internal bool changed=true;
                internal bool pvchange=true;
                public double epsilon = 0.001;
                public bool fdlfOk=false;
                public void init(){...}
                public void run(){...}
                ...