草庐IT

关于外部类私有(private)变量访问的java内部/外部类问题

我有以下java类:classOuter{privateIntegera;privateLongb;classInner{publicvoidfoo(){System.out.println("aandbare"+a+""+b);}}}当我在Outer和Outer$Inner上运行javap时,我得到以下信息:C:\test>javapOuterCompiledfrom"Outer.java"classOuterextendsjava.lang.Object{Outer();staticjava.lang.Integeraccess$000(Outer);staticjava.lang

Java:私有(private)内部类合成构造函数

这个问题在这里已经有了答案:Whyisananonymousinnerclasscontainingnothinggeneratedfromthiscode?(5个答案)关闭9年前。我有一个Outer类,它有一个privateInner类。在我的Outer类方法中,我实例化了Inner类,如下所示:Outerouter=newOuter();Innerinner=outer.newInner();编译器将此代码转换为:Outerouter=newOuter();Innerinner=newInner(outer,null);使用反射显示Inner类具有以下合成构造函数:privateO

java - 为什么这段代码可以在 Java 1.6 中编译,但不能在 Java 1.7 中编译?

以下代码在Java1.6中编译良好,但在Java1.7中编译失败。为什么?代码的相关部分是对私有(private)“数据”字段的引用。该引用来自定义该字段的同一个类,因此看起来是合法的。但它是通过一个通用类型的变量发生的。此代码-基于内部库中的类的精简示例-在Java1.6中有效,但现在在Java1.7中无效。我不是在问如何解决这个问题。我已经这样做了。我试图找到一个解释,说明为什么这不再起作用。我想到了三种可能性:根据JLS,此代码不合法,不应该编译(1.6编译器中有一个错误,已在1.7中修复)根据JLS,此代码合法,应该可以编译(1.7编译器中引入了向后兼容性错误)此代码落入JLS

Java Javadoc 包含 Private

我想为我的应用程序生成javadoc,我还想包含私有(private)成员。我在Javadocdocumentation中找到了以下内容-privateShowsallclassesandmembers.你能帮我举个例子吗?它应该类似于:javadoc-private...。我需要知道如何为生成的html文档文件提供根目录和目标目录。谢谢。编辑:我找到了一种从NetBeans6.8生成javadoc的方法。这是如下:NetBeansJava项目通常在项目的属性部分中为此设置一个参数。您可以在“项目”窗口中右键单击项目名称并选择“属性”。在出现的项目属性窗口中,文档节点包含一个标记为“包

java - Mockito @InjectMocks 不适用于相同类型的字段

我很惊讶地发现下面的简单代码示例并不适用于所有Mockito版本>1.8.5@RunWith(MockitoJUnitRunner.class)publicclassMockitoTest{@Mock(name="b2")privateBb2;@InjectMocksprivateAa;@TestpublicvoidtestInjection()throwsException{assertNotNull(a.b2);//failsassertNull(a.b1);//alsofails,becauseunexpectedlyb2mockgetsinjectedhere}staticcl

java - 我可以在 Java 枚举上使用构建器模式吗

我正在重写一些代码,我已经决定了重新创建类的方式,因为有固定数量的工作表,我将它们创建为枚举。这是基于构建器模式与伸缩构造器的可读性的决定。我的代码获取了一些.xls文件,添加了标题(并从其他.xls文件中读取了一些)和一些子表。然后,它以特定方式将各种这些工作表合并在一起,以在主Excel工作簿上制作标签。我的问题是一些工作簿选项卡采用不同数量的工作表作为参数。我正在尝试应用构建器模式。这是我正在尝试编写的代码:publicenumworkBookSheet{mySheet1("Name1","mainSheet1.xls",true,1).addSubSheet("pathToSu

Java Enum 访问私有(private)实例变量

考虑这个例子:enumSomeEnum{VALUE1("value1"),VALUE2("value2"),VALUE3("value3");privateStringvalue;privateSomeEnum(finalStringvalue){this.value=value;}//toStringpublicStringtoString(){returnvalue;}}我们怎么能做到这一点(而且值真的发生了变化)?SomeEnum.VALUE1.value="Value4";System.out.println(SomeEnum.VALUE1);枚举实例不是隐式静态和最终吗?此外

Java - 奇怪的静态字符串行为 - 新字符串 ("xxx") 与 "xxx"

publicclassTest{privatestaticfinalStringstr1=newString("en");privatestaticTestinstance=initInstance();privatestaticfinalStringstr2=newString("en");privatestaticfinalStringstr3="en";privateTest(){}publicstaticvoidmain(String[]args){}privatestaticTestinitInstance(){instance=newTest();System.out.pr

java - 来自匿名静态实例的私有(private)实例成员访问

考虑以下代码:enumE{A{publicintget(){returni;}},B{publicintget(){returnthis.i;}},C{publicintget(){returnsuper.i;}},D{publicintget(){returnD.i;}};privateinti=0;E(){this.i=1;}publicabstractintget();}我在前2个枚举常量声明(A和B)上遇到编译时错误,但在后2个枚举常量声明(C和D)上没有问题。错误是:Error1onlineA:non-staticvariableicannotbereferencedfrom

Java 私有(private)字段可见性

所以前几天我正在制作一个类并使用Eclipse的方法创建equals方法,当我意识到它生成了以下工作代码时:classTest{privateintprivateInt;[...]publicbooleanequals(Objectobj){[...]Testt=(Test)obj;if(t.privateInt==privateInt){[...]}}t.privateInt..????这应该是私有(private)的!所以我想除了private、protected、packageprotected和public之外,还有一个字段可见性。那么这里发生了什么?这个怎么称呼有人会在哪里使