这之间有什么实际区别吗publicclassOuterClass{privateclassInnerClass{publicInnerClass(){}}}还有这个?publicclassOuterClass{privateclassInnerClass{privateInnerClass(){}}} 最佳答案 从另一个类访问私有(private)成员稍微复杂一些,因为JVM实际上不允许这样做。因此,编译器会注入(inject)访问器方法,这会使它稍微变慢或使您的堆栈跟踪更加复杂。出于这些原因,我将其保留为本地包。顺便说一句,抽象类
当我的内部类具有私有(private)方法或字段时,编译器必须创建合成的包保护访问器方法以允许外部类访问这些私有(private)元素(反之亦然)。为避免这种情况,我通常将所有字段、方法和构造函数设为包保护而不是私有(private)。但是类本身的可见性如何呢?是否有开销privatestaticclassA{A(){}}对比staticclassA{A(){}}请注意,构造函数在这两种情况下都受包保护,或者将类设为私有(private)会改变这种情况吗? 最佳答案 你试过编译它并比较字节码吗?这是我的结果。对于:publiccla
我熟悉Import-Package和Export-Package,但这对我来说是新的。它有什么作用? 最佳答案 在OSGi容器中运行时它什么都不做。事实上,OSGi规范中甚至没有提到它(我检查了R4)。但是,它可以在.bnd文件中指定,供bnd在构建时使用。如果是这样,它可用于确定bundle中的内容。当bnd构建一个bundle时,它会自动确定哪些类需要进入bundle。导出的包中的所有类都包括在内,它们(传递地)依赖的所有类也包括在内。这意味着如果一个类似乎没有被使用,那么它就不会被包含在包中。但是,您可以使用Private
尽管这是一个非常基本的代码,但似乎Java或我用来运行代码的EclipseIDE使用的JVM存在一些根本性的缺陷。代码运行,即使它不应该(我认为)!A.java中的代码只是显示“你好,我是A!”这里是:importjava.lang.*;importjava.util.*;classA{privatevoidmethodA(){System.out.println("Hello,IamA!");}publicstaticvoidmain(String[]args){Aa=newA();a.methodA();}}我不明白为什么在创建类A的实例后,main()会在该实例上成功运行类A的私
classEmployee{//salaryvariableisaprivatestaticvariableprivatestaticdoublesalary;//DEPARTMENTisaconstantpublicstaticfinalStringDEPARTMENT="Development";publicstaticvoidmain(Stringargs[]){salary=1000;System.out.println(DEPARTMENT+"averagesalary:"+salary);}}这个java程序包含一个静态变量。但是我无法理解公共(public)静态变量和私有
从其封闭范围引用元素的Javalambda持有对其封闭对象的引用。一个人为的例子,lambda持有对MyClass的引用:classMyClass{finalStringfoo="foo";publicConsumergetFn(){returnbar->System.out.println(bar+foo);}}如果lambda的生命周期很长,这是有问题的;然后我们有一个长期存在的MyClass引用,否则它会超出范围。在这里,我们可以通过用私有(private)静态类替换lambda来进行优化,这样我们就只持有对我们需要的字符串的引用,而不是对整个类的引用:classMyClass{
在任何情况下使用String()构造函数与字符串文字相比是否有益?使用字符串文字可以重用现有对象,那么为什么我们需要公共(public)构造函数呢?有实际用途吗?例如,两个文字都指向同一个对象。Stringname1="name";//newString("name")createsanewobject.Stringname2="name"; 最佳答案 构造函数具有有用用途的一个示例:由String.substring()创建的字符串共享String的底层char[]>它们是由...创建的。因此,如果您有一个长度为10.000.00
当从Scala代码生成的字节码用于Java代码时,我刚刚发现Scala作用域的一个非常奇怪的行为。考虑以下使用Spark(Spark1.4、Hadoop2.6)的代码片段:importjava.util.Arrays;importjava.util.List;importorg.apache.spark.SparkConf;importorg.apache.spark.api.java.JavaSparkContext;importorg.apache.spark.broadcast.Broadcast;publicclassTest{publicstaticvoidmain(Stri
这个问题在这里已经有了答案:WhycanouterJavaclassesaccessinnerclassprivatemembers?(10个答案)关闭9年前。谁能告诉我私有(private)成员(member)的访问级别?这段代码让我困惑了很久:为什么Line类的private成员k可以在outter类的print方法中访问到?publicclassmyClass{publicstaticclassLine{privatedoublek;privatedoubleb;privatebooleanisVertical;publicLine(doublek,doubleb,boolean
我知道我可以使用反射来调用私有(private)方法,并获取或设置私有(private)变量的值,但我想重写一个方法。publicclassSuperClass{publicvoidprintInt(){System.out.println("Iam"+getClass()+".Theintis"+getInt());}privateintgetInt(){return1;}}publicclassSubClassextendsSuperClass{publicstaticvoidmain(String[]args){(newSubClass()).printInt();}public