publicclassParent{publicenumChildType{FIRST_CHILD("Iamthefirst."),SECOND_CHILD("Iamthesecond.");privateStringmyChildStatement;ChildType(StringmyChildStatement){this.myChildStatement=myChildStatement;}publicStringgetMyChildStatement(){returnthis.myChildStatement;}}publicstaticvoidmain(String[]arg
我正在学习C#并且来自Java世界,看到C#没有“私有(private)包”时我有点困惑。我看到的大多数评论都是“你做不到;语言不是这样设计的”。我还看到了一些涉及internal和partial的变通办法,以及表示这些变通办法违背语言设计的评论。为什么C#是这样设计的?另外,我将如何执行以下操作:我有一个Product类和一个ProductInstance类。我想要创建ProductInstance的唯一方法是通过Product类中的工厂方法。在Java中,我会将ProductInstance放在与Product相同的包中,但将其构造函数设为packageprivate,这样只有Pr
我在Java中扩展了一个类,它有一个私有(private)变量,我想在它被更改之前获取它的值。在父类(superclass)中没有访问此变量的方法。我试过super().m_zoomArea(变量在jChart2D的ZoomableChart类中)。当调用mouseDragged方法时,变量会更新。我已经重写了这个方法,想在更新之前获取变量的值。 最佳答案 您可以访问任何类的私有(private)变量,但这是一个坏主意,因为您违反了OOP的基本原则之一-封装。但有时程序员被迫打破它。这是解决您问题的代码:扩展类publicclass
静态变量可以用私有(private)静态方法或静态block初始化。两者之间有什么微妙的区别吗?是否存在无法使用静态方法初始化静态成员的情况?我发现后者更具可读性。静态block初始化:privatestaticintNUM_ITER;static{//OperationsNUM_ITER=//valfromaboveoperations.}私有(private)静态方法初始化:privatestaticintNUM_ITER=calculateNumIter();//Somemethodcommentonhowwearecalculating.privatestaticintcalc
假设我们需要在native代码中实现一些java方法并将其公开给用户。我们知道所有的工作都是由native端完成的,即java代码的唯一职责是将用户提供的参数传递给native代码并返回结果。据此,java层可能有两种实现方式:通过使用直接向用户公开的native方法:publicnativeObjectdoSmth(Objectarg0,Objectarg1);通过使用围绕私有(private)本地方法的瘦公共(public)包装器:publicObjectdoSmth(Objectarg0,Objectarg1){returnnativeDoSmth(arg0,arg1);}pri
我遇到了一个实际上可以自己解决的问题,但我仍然不明白为什么我的原始代码不起作用,或者是否有比我找到的解决方案更优雅的解决方案。我在这里展示了我的代码的简化版本。考虑以下抽象父类(superclass)X:publicabstractclassX{privateinti;publicvoidm1(Xx){x.i=1;m2(x);}publicabstractvoidm2(Xx);}当调用m1时,我们操作传递的实例的X的私有(private)字段,然后我们用该实例调用m2。我有几个X的子类,它们在某种意义上都是相似的,因为它们也声明了它们操纵的私有(private)成员。为了实现这一点,他
假设我有一个外部类,里面有一个内部类。内部类有四个字段,带有所有可能的访问修饰符。classOuter{privateclassInner{publicintpublicField;protectedintprotectedField;intpackagePrivatefield;privateintprivateField;}voiddoSomethingWithFields(){Innerinner=newInner();inner.publicField=111;inner.protectedField=111;inner.packagePrivatefield=111;inne
在java.util.Arrays中定义了一个名为“ArrayList”的私有(private)静态类。它仅从Arrays.asList方法引用。这样做有什么好处?为什么不引用java.util.ArrayList?代码如下:/***@serialinclude*/privatestaticclassArrayListextendsAbstractListimplementsRandomAccess,java.io.Serializable 最佳答案 尽管privatestaticArrayList类与java.util.Array
为什么JUnit5中的默认访问修饰符是包私有(private)的?JUnit4中的测试必须公开。将其更改为package-private有什么好处? 最佳答案 WhyisthedefaultaccessmodifierinJUnit5package-private?这不是“默认”。技术上没有默认值。相反,在JUnitJupiter中,您可以选择:public、protected或package-private。Whatisthebenefitofchangingittopackage-private?好处是您不再有public类型。
这个问题在这里已经有了答案:Whyusegettersandsetters/accessors?(37个答案)Whatisthepointofsettersandgettersinjava?[duplicate](14个答案)关闭8年前。如果我可以通过getter-returnedreference改变private变量的值,那不是绕过了setter方法吗?这不是违背了getter-setter和私有(private)变量的目的吗publicclassTest{privateDimensioncannotBeChanged;publicTest(intheight,intwidth){