我遇到了一个问题,即访问内部类的局部变量需要声明为final。从方法createGrids()->"squares[i][j]=0;"可以看出,i是一个需要声明为final的局部变量。我不知道为什么,我在字段中添加了final,但效果不佳。importjava.util.ArrayList;importjava.util.Random;//省略publicclassMinesweeper{privateJFrameframe;privateintcols=9;privateintrows=9;publicstaticfinalintGRID_HEIGHT=9;publicstaticf
这个问题在这里已经有了答案:Whatcauseserror"NoenclosinginstanceoftypeFooisaccessible"andhowdoIfixit?(11个答案)关闭8年前。我是Java新手。我的文件A.java如下所示:publicclassA{publicclassB{intk;publicB(inta){k=a;}}Bsth;publicA(Bb){sth=b;}}在另一个java文件中,我试图创建A对象调用anotherMethod(newA(newA.B(5)));但由于某种原因我得到错误:没有可访问类型A的封闭实例。必须用类型A的封闭实例限定分配(例
我正在尝试了解规范中是否存在内部类的Java描述符和签名之间存在差异的原因。(我这里是直接看类文件的内容,但是我用javap来说明)。(n.b.我已经在JDK1.6.0_33和1.7.0_05上尝试过,使用Java7的javap查看时-java6的javap似乎没有显示任何通用的问题签名信息,根据下面肖恩的回答。)更新:感谢那些讨论-我的看法是描述符(不包含一般信息)是正确的。签名(它是方法的一个属性,确实包含通用信息)不正确。方法的SIGNATURE的相关ConstPool条目是“ConstantUTF8[(Ljava/util/list)V]”Java6中的Javap不看签名,
当我尝试编译以下代码时,出现编译错误:unexpectedtypeSystem.out.println(newTest().C.i);^required:class,packagefound:valueclassTest{classC{staticfinalinti=0;}publicstaticvoidmain(String...z){System.out.println(newTest().C.i);}}但是,如果我将newTest().C.i更改为newTest().newC().i,它编译得很好。为什么?如果我在C中是静态的,那么我就不必实例化C。我应该能够通过类C调用它,而不
我被告知,这激发了我对这个话题的好奇:JavaguiclassescanimplementhundredsofListenersandCallbacksandmanybooksteachyoutoimplementalltheseinterfacesinyourguiclass.Alternatively,theseaspectscanbeimplementedininnerclasses,somethodscalledbythatlistenersdonotgetmixedup.我想知道如何在没有内部类但有私有(private)类的ActionScript中执行此操作。但是,我不认为
我正在阅读有关接口(interface)和类中的内部类的内容。我无法理解真正的用途。但是,我不想在这篇文章中讨论有关接口(interface)内部类的任何内容。到目前为止,我一直使用内部类作为回调。我可以在某处外部声明类。假设我有一个学生列表,我想按id对他们进行排序。我必须实现Comparator接口(interface)并将其作为参数提供给Collections的排序方法。publicclassStudentList{publicstaticvoidmain(String[]args){Liststudents=newArrayList();Studentstudent=newSt
在我看过的所有Java源代码示例中,监听器总是在内部类中声明。为什么-像这样对类进行编码而不是将监听器放在它们自己单独的*.java文件\类中的原因是什么?为听众单独上课会被认为是糟糕的设计吗?如果这不是一个糟糕的设计\可解雇的冒犯,有人可以张贴一个简短的例子来演示如何实现这个吗?感谢阅读。编辑\更新-10.8.2010:感谢所有花时间回复的人。许多有见地的观点需要考虑。阅读所有答案后,我认为除非有充分的理由,否则将监听器声明为内部类会更好也更容易。很抱歉没有早点回到这个问题,但我并不总是有足够的时间来编码:-(快乐的编码。 最佳答案
我已经通读了内部类教程,但有一点不明白。据说内部类隐藏了对外部类的引用,所以我通过这个简单的类提出了几个问题:publicclassOuterClass{publicvoiddoSomething(){JButtonbutton=newJButton();button.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){}});}}所以我们有一个本地内部类,它位于方法doSomething()中,我有一些问题。这个本地内部类是否持有对OuterClass的引用,因为它是本地的?在do
我怎样才能使这样的东西工作:classOuter{intsome_member;abstractclassInnerBase{abstractvoidmethod();}}classOuterExtendsInnerextendsOuter.InnerBase{OuterExtendsInner(Outero){o.super();}voidmethod(){//HowdoIusesome_memberhere?//WritingOuter.this.some_member->erroraboutOuternotbeinganenclosingclass//Writingjustsom
假设我有以下代码:abstractclassMyStream{publicabstractIterablegetIterable();publicMyStreamappend(finalinti){returnnewMyStream(){@OverridepublicIterablegetIterable(){returncons(/*outerclass's*/getIterable(),i);}};}publicstaticIterablecons(Iterableiter,inti){/*implementation*/}}如何从同名内部类引用外部类的getIterable?My