在Java中,内部类可以访问封闭类的私有(private)成员。但是外部类可以访问内部类的私有(private)成员吗?这与内部类是否是静态的无关。我认为这不是真的,但以下代码似乎可以编译并正常工作。publicclassOuter{classInner{privateinti=0;privateInner(){}}publicstaticvoidmain(String[]args){Outero=newOuter();Outer.Inneroi=o.newInner();oi.i=10;}} 最佳答案 是的,没关系。来自JLS,s
这是我在一次采访中被问到的一个问题:我有一个带有私有(private)成员的类A,而B类扩展了A。我知道一个类的私有(private)成员无法访问,但问题是:我需要访问一个类的私有(private)成员类A从类B中创建,而不是在类B中创建具有相同值的变量。 最佳答案 面试官要么测试你对访问修饰符的了解,要么测试你改变现有类的方法,或者两者兼而有之。我会列出它们(公共(public)的、私有(private)的、protected、包私有(private)的)以及每个的解释。然后继续说需要修改类A以允许从类B访问这些成员,方法是添加s
这是我在一次采访中被问到的一个问题:我有一个带有私有(private)成员的类A,而B类扩展了A。我知道一个类的私有(private)成员无法访问,但问题是:我需要访问一个类的私有(private)成员类A从类B中创建,而不是在类B中创建具有相同值的变量。 最佳答案 面试官要么测试你对访问修饰符的了解,要么测试你改变现有类的方法,或者两者兼而有之。我会列出它们(公共(public)的、私有(private)的、protected、包私有(private)的)以及每个的解释。然后继续说需要修改类A以允许从类B访问这些成员,方法是添加s
我的实体类如下所示:publicclassStudent{privateintgrade;//otherfieldsandmethods}我就是这样使用它的:Liststudents=...;考虑到它是私有(private)字段,如何按grade对students进行排序? 最佳答案 您有以下选择:使grade可见为grade定义一个getter方法定义一个ComparatorinsideStudent让Student实现Comparable使用反射(在我看来这不是一个解决方案,它是一个解决方法/hack)解决方案示例3:publi
我的实体类如下所示:publicclassStudent{privateintgrade;//otherfieldsandmethods}我就是这样使用它的:Liststudents=...;考虑到它是私有(private)字段,如何按grade对students进行排序? 最佳答案 您有以下选择:使grade可见为grade定义一个getter方法定义一个ComparatorinsideStudent让Student实现Comparable使用反射(在我看来这不是一个解决方案,它是一个解决方法/hack)解决方案示例3:publi
考虑这段代码:classFoo{publicvoiddoIt(String...strs){System.out.println("thisisvarargs");}privatevoiddoIt(Stringstr){System.out.println("thisissingle");}}classBar{publicstaticvoidmain(String[]args){newFoo().doIt("");}}javac1.6.0_29版本编译失败,提示:VarArgsError.java:14:doIt(java.lang.String)hasprivateaccessinF
考虑这段代码:classFoo{publicvoiddoIt(String...strs){System.out.println("thisisvarargs");}privatevoiddoIt(Stringstr){System.out.println("thisissingle");}}classBar{publicstaticvoidmain(String[]args){newFoo().doIt("");}}javac1.6.0_29版本编译失败,提示:VarArgsError.java:14:doIt(java.lang.String)hasprivateaccessinF
我想知道是否有人可以详细解释一下(int)(l^(l>>>32));在下面的hashcode实现中做(由eclipse生成,但与EffectiveJava相同):privateinti;privatecharc;privatebooleanb;privateshorts;privatelongl;privatedoubled;privatefloatf;@OverridepublicinthashCode(){finalintprime=31;intresult=1;result=prime*result+i;result=prime*result+s;result=prime*res
我想知道是否有人可以详细解释一下(int)(l^(l>>>32));在下面的hashcode实现中做(由eclipse生成,但与EffectiveJava相同):privateinti;privatecharc;privatebooleanb;privateshorts;privatelongl;privatedoubled;privatefloatf;@OverridepublicinthashCode(){finalintprime=31;intresult=1;result=prime*result+i;result=prime*result+s;result=prime*res
我正在查看一些由公司其他部门维护的Java代码,顺便提一下,一些前C和C++开发人员。普遍存在的一件事是使用静态整数常量,例如classEngine{privatestaticintENGINE_IDLE=0;privatestaticintENGINE_COLLECTING=1;...}除了缺少“final”限定符之外,我对这种代码有点困扰。我希望看到,在学校主要接受Java培训,会更像classEngine{privateenumState{Idle,Collecting};...}但是,我的论点失败了。为什么,如果有的话,后者比前者更好? 最佳答案