草庐IT

private_struct

全部标签

java - 返回私有(private)数据的副本而不是引用

在令人惊叹的“JavatheGoodParts”一书中,作者给出了一些代码,在其getter方法中返回一个对象的副本(与封装良好的字段一起使用),然后声明:Thisapproach,whichtriestoreturncopiesofprivatedataratherthanreferencestothatprivatedata,isgenerallyagoodidea为什么会这样?我认为封装的一个目标是确保没有人可以实际更改私有(private)成员。那我为什么要写这样的东西privatesomeTypefieldName=newsomeType();...像这样定义它的getter

java - 私有(private)静态最终字段

我只是想澄清一下。-之间有什么区别?privatestaticintSTUDENT_AGE=18;和privatestaticfinalintSTUDENT_AGE=18;在场内?JonSkeet解释为“与特定实例完全无关”,好吧,我想我明白了。那么final在这种情况下到底做了什么?下面的代码不起作用是因为学生年龄被指定为静态最终年龄吗?这是否意味着默认年龄根本无法覆盖?那么是否可以创建指定年龄而非默认年龄的构造函数?privateStringmyName;privateStringmyAddress;privateintmyYearEnrolled;privateStringmyG

java - 私有(private)内部类的构造函数应该声明为公共(public)的还是私有(private)的?

这之间有什么实际区别吗publicclassOuterClass{privateclassInnerClass{publicInnerClass(){}}}还有这个?publicclassOuterClass{privateclassInnerClass{privateInnerClass(){}}} 最佳答案 从另一个类访问私有(private)成员稍微复杂一些,因为JVM实际上不允许这样做。因此,编译器会注入(inject)访问器方法,这会使它稍微变慢或使您的堆栈跟踪更加复杂。出于这些原因,我将其保留为本地包。顺便说一句,抽象类

java - Java 中的私有(private)内部类是否有性能开销?

当我的内部类具有私有(private)方法或字段时,编译器必须创建合成的包保护访问器方法以允许外部类访问这些私有(private)元素(反之亦然)。为避免这种情况,我通常将所有字段、方法和构造函数设为包保护而不是私有(private)。但是类本身的可见性如何呢?是否有开销privatestaticclassA{A(){}}对比staticclassA{A(){}}请注意,构造函数在这两种情况下都受包保护,或者将类设为私有(private)会改变这种情况吗? 最佳答案 你试过编译它并比较字节码吗?这是我的结果。对于:publiccla

java - 私有(private)包 list header 有什么作用?

我熟悉Import-Package和Export-Package,但这对我来说是新的。它有什么作用? 最佳答案 在OSGi容器中运行时它什么都不做。事实上,OSGi规范中甚至没有提到它(我检查了R4)。但是,它可以在.bnd文件中指定,供bnd在构建时使用。如果是这样,它可用于确定bundle中的内容。当bnd构建一个bundle时,它​​会自动确定哪些类需要进入bundle。导出的包中的所有类都包括在内,它们(传递地)依赖的所有类也包括在内。这意味着如果一个类似乎没有被使用,那么它就不会被包含在包中。但是,您可以使用Private

java - 为什么可以从不同的实例访问 "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的私

java - 公共(public)静态变量和私有(private)静态变量之间的区别

classEmployee{//salaryvariableisaprivatestaticvariableprivatestaticdoublesalary;//DEPARTMENTisaconstantpublicstaticfinalStringDEPARTMENT="Development";publicstaticvoidmain(Stringargs[]){salary=1000;System.out.println(DEPARTMENT+"averagesalary:"+salary);}}这个java程序包含一个静态变量。但是我无法理解公共(public)静态变量和私有

Java Lambda 引用封闭对象 : Replace with Private Static Class?

从其封闭范围引用元素的Javalambda持有对其封闭对象的引用。一个人为的例子,lambda持有对MyClass的引用:classMyClass{finalStringfoo="foo";publicConsumergetFn(){returnbar->System.out.println(bar+foo);}}如果lambda的生命周期很长,这是有问题的;然后我们有一个长期存在的MyClass引用,否则它会超出范围。在这里,我们可以通过用私有(private)静态类替换lambda来进行优化,这样我们就只持有对我们需要的字符串的引用,而不是对整个类的引用:classMyClass{

java - 为什么 String() 构造函数不是私有(private)的?

在任何情况下使用String()构造函数与字符串文字相比是否有益?使用字符串文字可以重用现有对象,那么为什么我们需要公共(public)构造函数呢?有实际用途吗?例如,两个文字都指向同一个对象。Stringname1="name";//newString("name")createsanewobject.Stringname2="name"; 最佳答案 构造函数具有有用用途的一个示例:由String.substring()创建的字符串共享String的底层char[]>它们是由...创建的。因此,如果您有一个长度为10.000.00

java - 从 Java 可见的 Scala 中的包私有(private)范围

当从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