草庐IT

inner-classes

全部标签

Java编译器错误谜题: "inner classes cannot have static declarations" - except for simple types

在编写代码时,我遇到了一种奇怪的Java编译器行为。当编译类(下面的源代码)时,编译器在NULL类变量上发出错误(“内部类不能有静态声明”)。这符合预期!但是,零类变量不会产生错误。这个我不懂!为什么会有这种差异,它似乎允许在内部类中对简单类型进行静态声明,但不允许对对象进行静态声明。(javac-version:1.6.0_24)publicclassOuter{publicstaticfinalRunnableHELLO=newRunnable(){//NocompilererrorpublicstaticfinalintZERO=0;//Causescompilererror:"

java - 为什么我的类不能实现在其中声明的接口(interface)?

我刚遇到一个行为,我首先认为它是Eclipse中的错误。考虑这个简单的类:publicclassFoo{publicstaticinterfaceCallback{publicvoidonAction();}}这是完全正确的。然而,这不是:publicclassFooimplementsCallback{publicstaticinterfaceCallback{publicvoidonAction();}publicvoidonAction(){/*someimplementation*/}}但这也是有效的:publicclassFoo{publicstaticinterfaceCa

java - 为什么我需要提供封闭类对象而不是封闭类对象

classOuterA{classInnerA{}}classSubclassCextendsOuterA.InnerA{SubclassC(OuterAouterRef){outerRef.super();}}classXYZ{publicstaticvoidmain(String[]args){newSubclassC(newOuterA());}}在上面的代码中为什么我需要将OuterA对象引用传递给要编译的.java文件的SubclassC构造函数?为什么不需要将InnerA对象引用传递给SubclassC构造函数? 最佳答案

java - 方法局部内部类只能访问最终局部变量。为什么?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Whyinnerclassesrequire“final”outerinstancevariables[Java]?Whyareonlyfinalvariablesaccessibleinanonymousclass?classOuter{privateStringx="instancevariable";voiddoStuff(){Stringz="localvariable";classInner{publicvoidseeOuter(){System.out.println("Outerxis:"+x);

java - MANIFEST.MF 中的Class-Path 是否只能包含jar 文件?

我想在其他目录中包含类文件,而不是在主类的目录中。如果我将这些目录放入MANIFEST.MF的Class-Path属性中,它不起作用。为什么?除了将这些类打包成一个jar文件,还有什么解决办法吗? 最佳答案 如该链接中所述,需要尾部斜线:Class-PathAttribute 关于java-MANIFEST.MF中的Class-Path是否只能包含jar文件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.

java - @Transactional (noRollbackFor=RuntimeException.class) 不会阻止在 RuntimeException 上回滚

@Transactional(noRollbackFor=RuntimeException.class)publicvoidmethodA(Entitye){service.methodB(e);}---以下服务方式---@Transactional(propagation=Propagation.REQUIRES_NEW,noRollbackFor=RuntimeException.class)publicvoidmethodB(Entitye){dao.insert(e);}当methodB()中的dao.insert(e)导致主键冲突并抛出ConstraintViolationE

java - 字节好友 : Create implementation for an abstract class

我想使用ByteBuddy在运行时为抽象类创建一个实现,我遇到了一个问题,当从创建的实例。我有一个像这样的现有abstract类(我实际上无法修改它,它实际上包含更多逻辑):publicabstractclassAlgorithm{abstractintexecute();}使用以下最小样本,我希望我的Algorithm实例返回一个常量值:Classtype=newByteBuddy().subclass(Algorithm.class).method(ElementMatchers.named("execute")).intercept(FixedValue.value(42)).m

java - 为什么java Iterator接口(interface)应该实现为内部类?

我最近看了一本书《TheJavaTutorials》第三版。如图所示,它讲的是内部类实现。在第3段中,它说“Stack类本身不应实现Iterator接口(interface),因为...”。我找不到Stack类不应该实现Iterator的任何理由。给出的原因并不普遍。你能解释一下吗? 最佳答案 从根本上说,迭代器是有状态的-它需要知道它在集合中指向的何处。这不属于集合本身的一部分——给出的解释是正确的……完全有可能有两个独立的迭代器对象,迭代同一个集合对象。如果集合本身实现了Iterator接口(interface),您将如何建模?

Java Class.isAssignableFrom 困惑

我发现原始类型问题System.out.println("Integer.class.isAssignableFrom(int.class)="+Integer.class.isAssignableFrom(int.class));System.out.println("int.class.isAssignableFrom(Integer.class)="+int.class.isAssignableFrom(Integer.class));这两个语句都向调用者返回false。所以拳击似乎不适用于这里。我的问题是我的观察是否正确,或者是否有其他API可以正确地进行此测试?-------

java - 当父类(super class)默认构造函数具有 'throws' 子句时,为什么我会收到未报告的异常?

当我运行以下代码时出现未报告的异常我的代码如下图classSuper{publicSuper()throwsException{System.out.println("SuperClass");}}publicclassSubextendsSuper{publicstaticvoidmain(String[]args)throwsException{Subs=newSub();}}出现以下错误:Sub.java:6:默认构造函数中未报告的异常java.lang.Exception公共(public)类Sub扩展Super{1个错误 最佳答案