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

内部类轻吗?

秦渝
2023-03-14
问题内容

内部类是否比普通类轻巧,或者最终Java像普通类一样编译内部类?

我知道java中的类本身并不是很轻量,并且它们占据了permgen内存的一部分,所以我想知道最好是使用类似闭包的函数作为内部类,还是标准类也可以呢?


问题答案:

内部类和匿名内部类都可以编译为.class文件。例如:

class Outer {
     class Inner {

     }

     Object function() {
          return new Object() {

          };
     }
}

将生成三个.class文件Outer.classOuter$Inner.classOuter$1.class。它们没有比其他类更“轻巧”,并且(据我所知)从性能角度来看,使用一个类比另一个类没有优势。当然,内部类(尤其是匿名内部类)在常规类很难编写代码的情况下确实有用,但这是一个单独的问题。



 类似资料:
  • 问题内容: 我想知道lambda在Java 8中有多大的好处。我同意有时使用lambda可能更具可读性,但是它对性能方面真的有很大影响吗?还是主要集中在语法糖上? 有时我更喜欢匿名内部类。 当我一直不使用lambda时,我真的会失去很多好处吗? 唯一的?大?在我看来,性能提升是因为我们实际上并没有创建类加载器必须在程序开始时加载的类,例如创建许多线程: 创建类似的类。 除此之外, 除了代码的可读性

  • 问题内容: 我正在做一个Java学校作业,以为我已经完成了所有工作,但是又过了一遍要求,意识到我忽略了一个特定的要求,现在我需要重写一段代码,但是我不明白要求是什么? 当GUI窗口关闭时,我需要发生一些事情,目前,我已将其编写为一种简单的方法,并且可以正常工作,但是分配是说“ 处理程序应该是扩展WindowAdapter类的内部类的对象。 ”我对内部类和扩展有基本的了解,但是这需要成为一个对象吗?

  • 本节我们将介绍 Java 中的内部类。通过本节的学习,我们将了解到什么是内部类,内部类的分类和作用。在内部类的分类部分,我们将逐一学习各个类型的内部类如何定义,如何实例化以及各自的特点,要注意区分不同类型内部类的异同。有了这些基础知识之后,我们也会结合示例介绍为什么需要内部类。 1. 概念 在 Java 语言中,可以将一个类定义在另一个类里面或者一个方法里面,我们把这样的类称为内部类。 与之对应的

  • 把一个类定义在另一个类的内部,成为内部类。 2. 作用 内部类提供了更好的封装,只能让外部类直接使用,不允许同一个包内的其他类直接访问。 内部类可以直接访问外部类的私有属性,内部类被当成外部类的成员,但外部类不能访问内部类的私有属性。 3. 使用场合只在为外部类提供服务情况下使用。 4. 分类 4.1 成员内部类 4.2 静态内部类 4.3 局部内部类 4.4 匿名内部类实例化接口,并重写接口的方

  • 局部内部类是指在一个方法中定义的内部类。示例代码如下: 局部内部类有如下特点: 1)局部内部类与局部变量一样,不能使用访问控制修饰符(public、private 和 protected)和 static 修饰符修饰。 2)局部内部类只在当前方法中有效。 3)局部内部类中不能定义 static 成员。 4)局部内部类中还可以包含内部类,但是这些内部类也不能使用访问控制修饰符(public、priv

  • 我有一个处理M×N矩阵的简单程序。当完成处理后,我想打印出标准输出的矩阵。我知道我可以写一些方法比如static[void/String]matrix print(int[][]my matrix)来打印出矩阵或者返回它的字符串表示。 然而,我认为一个更优雅的解决方案是覆盖数组类中的toString()方法。这样我就可以调用System.out.println(myMatrix),在我看来,它比上