草庐IT

java - 访问外部类的字段

在给定对内部类对象的引用的情况下,如何访问外部类的字段?classOuter{intfield;classInner{voidmethod(Innerparameter){//workingonthecurrentinstanceiseasy:)field=0;Outer.this.field=1;//workingonanotherinstanceishard:(parameter.field=2;//doesnotcompileparameter.Outer.this.field=3;//doesnotcompileparameter.outer().field=4;//Thisw

java - 内部类访问外部类方法,方法名相同

我有一个类和一个内部类01publicclassA{02voidtest(){};03publicclassB{04voidtest(){05test();06}07}08}好的,05行id喜欢访问A类的方法test。但是我进入了一个循环,因为我不知道如何指定使用类A的方法。有什么想法吗? 最佳答案 01publicclassA{02voidtest(){};03publicclassB{04voidtest(){05test();//localB.test()method,sorecursion,useA.this.test();

java - 内部类是轻量级的吗?

是内部类比普通类更轻量,还是最终java编译内部类和普通类一样?我知道java中的类本身并不是非常轻量级的,它们会占用部分permgen内存,所以我想知道是否最好使用类似闭包的函数作为内部类,或者标准类是否也可以好吗? 最佳答案 内部类和匿名内部类都编译成.class文件。例如:classOuter{classInner{}Objectfunction(){returnnewObject(){};}}会生成三个.class文件,Outer.class、Outer$Inner.class、Outer$1.class。它们并不比其他类更

java - 内部类内部的内部静态类无法转换

受到这个问题的启发:HowtoimplementsIterable我决定制作一个基本的链表实现并实现一个迭代器,以便拥有如下代码:MyListmyList=newMyList();myList.add("hello");myList.add("world");for(Strings:myList){System.out.println(s);}代码并不难处理,创建一个classMyListimplementsIterable用privatestaticclassNode和一个privateclassMyListIteratorimplementsIterator,但后来我在实现自己的I

java - 在 Java 中作弊单继承?

我听说在Java中有一种方法可以欺骗单继承并实现多继承。有谁知道如何实现这个(不使用接口(interface))?只是出于好奇;-) 最佳答案 当然可以,但这很棘手,您真的应该考虑一下这是否是您想要的方式。这个想法是使用基于范围的继承和基于类型的继承。这是说出于内部目的,内部类“继承”外部类的方法和字段的类型谈话。它有点像混合,外部类混入内部类,但不安全,因为您可以更改外部类的状态并使用其方法。GiladBracha(主要的Java语言设计者之一)写了一个paper讨论那个。所以,假设你想在一些不相关的类之间共享一些内部使用的方法(

java - 为什么内部类的扩展会得到重复的外部类引用?

我有以下Java文件:classOuter{classInner{publicintfoo;}classInnerChildextendsInner{}}我使用这个命令编译然后反汇编文件:javactest.java&&javap-p-cOuterOuter.InnerOuter.InnerChild这是输出:Compiledfrom"test.java"classOuter{Outer();Code:0:aload_01:invokespecial#1//Methodjava/lang/Object."":()V4:return}Compiledfrom"test.java"clas

java - 设置内部类的日志级别(在 Glassfish 中)

我正在寻找一种方法来设置内部类的日志级别,假设我有以下类:packagemypackage;classOuter{Innerinner=newInner();publicvoidlogSomething(){Logger.getLogger(Outer.class.getName()).log(Level.FINE,"I'malive!");inner.logSomething();}classInner{publicvoidlogSomething(){Logger.getLogger(Inner.class.getName()).log(Level.FINE,"I'maliveto

java - 静态内部类可以扩展它的外部类吗?

publicclassOuter{publicstaticclassInnerextendsOuter{}}它似乎可以用我的openjdk8编译器编译,但IntelliJ2019.1提示:无法访问外部我认为这可能是一个IntelliJ错误..编辑:我确认这是一个IntelliJ错误。我通过安装IntelliJ和捆绑的OpenJDK11解决了这个问题。 最佳答案 这适用于OpenJDK11:publicclassOuter{publicstaticvoidmain(String[]args){Innerinner=newInner()

java - PowerMock 可以为测试用例实例化一个内部类吗?

我正在尝试用多个私有(private)类测试一个类(是的,我知道这通常被认为是可测试性的不良做法,但这个问题与设计原则无关)。我的类(class)看起来像这样:publicclassEnclosingClass{...privateclassInnerClassimplementsInnerClassType{publicInnerClass(){/*dostuff*/}publicintInnerClassMethod();}}InnerClassType是一个公共(public)接口(interface)我尝试通过以下方式使用powermock实例化类:Classclazz=Whi

Java内部类的使用和实例化

前段时间我用Java编写了一个小型图像查看器/处理程序,如果您愿意的话,它是一个小型Photoshop。我希望有一个下拉菜单,我可以在其中选择我打开的图像中的哪一张“在桌面上”,即。显示和应用的方法。我希望图像的名称成为菜单中显示的JMenuItem的名称。我还希望在添加新图像时出现一个新按钮。我对此疑惑了一段时间,最终提出了这个解决方案,这是一个新类,用于在添加图像时处理新按钮的创建。代码如下:importjava.awt.event.*;importjavax.swing.*;importjava.util.*;publicclassImageList{privateArrayLi