草庐IT

java - java中为什么限制在内部类中声明静态成员变量?

考虑下面的例子在内部类中继承静态变量没有任何限制,为什么我们在内部类中只能声明静态成员变量?publicclassOuter{publicclassInner{publicstaticStringnotAllowed;/*AbovelinegivefollowingcompilationerrorThefieldnotAllowedcannotbedeclaredstaticinanon-staticinnertype,unlessinitializedwithaconstantexpression*/}}但是现在如果我的内部类扩展了其他包含静态变量的类,那么这就可以正常工作了。考虑以

java - 使用内部类来反射(reflect)真实事物的关系

这更像是一个概念性问题。我知道如何做我想做的事。不过,我想知道这样做是否正确。我试图表现一些在现实生活中涉及一些嵌套的东西。它是一个文档,指定要使用一组项目执行的Activity。一个文档可能涵盖多个项目,每个项目可能有多个Activity。因此层次结构将是文档->项目->Activity。我目前的想法是表示这将是一个顶级类Document,它包含一个内部类ItemProgram,它本身包含一个内部类Activity。是的,这是两层嵌套。publicclassDocument{//PropertiesofthedocumentitselfprivateMapitemPrograms;/

Java:扩展内部类

我正在尝试了解Java中的扩展内部类。我已经四处阅读,但没有发现能完全回答我的问题。所以这里...我有...publicclassPie{protectedSlice[]slices;//PieconstructorpublicPie(intn){sliceGenerator(n)}privatevoidsliceGenerator(intn){slices=newSlice[n];finalfloatsweepAngle=360.0f/(float)n;floatstartAngle=0;for(inti=0;i然后我扩展这个...publicclassApplePieextends

java - 访问内部类中的局部变量

packagegeometry;publicclassHypotenuse{publicInnerTriangleit=newInnerTriangle();classInnerTriangle{publicintbase;publicintheight;}}Whichstatementistrueabouttheclassofanobjectthatcanreferencethevariablebase?A.Itcanbeanyclass.B.Noclasshasaccesstobase.C.Theclassmustbelongtothegeometrypackage.D.Thecl

java - Java 局部内部类中的访问方法

有没有办法访问Java中局部内部类的方法。以下代码是我之前尝试过的示例代码。据此,访问mInner()方法的机制是什么?classOuter{inta=100;ObjectmOuter(){classInner{voidmInner(){inty=200;System.out.println("mInner..");System.out.println("y:"+y);}}Inneriob=newInner();returniob;}}classDemo{publicstaticvoidmain(Stringargs[]){Outert=newOuter();Objectob=t.mO

java - 为什么不能在内部类中为静态变量使用初始化程序 block ?

这个问题在这里已经有了答案:WhydoesJavaprohibitstaticfieldsininnerclasses?(12个答案)关闭7年前。为什么java不允许在非静态内部类中使用静态初始化block进行静态声明?在下面的代码中,outer2会工作而inner2不会,尽管做同样的事情。有任何想法吗?我不是在寻找解决方法,我只是想了解为什么java无法做到这一点。publicclassWhyUNoStatic{publicstaticfinalStringouter1="snth";//okpublicstaticfinalStringouter2;//okstatic{outer

java - 如果外部类被泛化,则不能从静态上下文中引用“Main.this”

为什么下面的代码没问题,但是一将T作为泛型添加到Main中,就抛出如下错误?'Main.this'cannotbereferencedfromastaticcontext//publicclassMain{-uncommentthisfortheerrortoappearpublicclassMain{publicstaticvoidmain(String[]args){newMain();}classTestNonStatic{}privatestaticclassTestStatic{publicTestStatic(TestNonStaticnonStatic){//thisis

java - 这段代码如何继承父类的内部类?

下面是父类DblyLinkListpackageJavaCollections.list;importjava.util.Iterator;importjava.util.NoSuchElementException;publicclassDblyLinkListimplementsIterable{classDListNode{privateTitem;privateDListNodeprev;privateDListNodenext;DListNode(Titem,DListNodep,DListNoden){this.item=item;this.prev=p;this.next

Java Swing为一组按钮添加鼠标监听器(内部类)导致故障

好的,所以我要构建的程序很简单。有五个按钮,名称从0到4。如果按下其中任何一个按钮,那么控制台将打印数字0到4。我使用GridLayout将按钮放置在框架中。为了设置每个按钮,我创建了一个方法inicializarIG()。此inicializarIG()方法创建一个包含5个按钮的数组,并在for循环中执行以下操作:为按钮数组中的每个单元格创建一个按钮实例。为每个按钮设置一个mouseListener。每个Listener中要打印的值是不同的,它由循环的索引决定(我想通过使用索引来实现!)。将按钮添加到主框架。令人惊讶的是,这个简单的程序无法正常工作。无论按下什么按钮,它总是打印数字“

java - 为什么我不能有一个两层深度的内部类,其名称与其包含类相同?

今天,其他一些开发人员发现了一个带有一些有趣嵌套的XML模式,JAXB将其编译成如下结构:publicclassChoices{publicstaticclassChoice{publicstaticclassChoice{}}}如果您尝试编译它,Java编译器会说,classChoices.ChoiceisalreadydefinedinclassChoices当然,最里面的classChoice声明上有下划线。但我要说的是,Choices.Choice类并不是它试图声明的内容。相反,它试图声明Choices.Choice.Choice,这将是一个不同的类。有趣的是,这很好:publ