草庐IT

private_extern

全部标签

c# - 为什么 C# 没有私有(private)包?

我正在学习C#并且来自Java世界,看到C#没有“私有(private)包”时我有点困惑。我看到的大多数评论都是“你做不到;语言不是这样设计的”。我还看到了一些涉及internal和partial的变通办法,以及表示这些变通办法违背语言设计的评论。为什么C#是这样设计的?另外,我将如何执行以下操作:我有一个Product类和一个ProductInstance类。我想要创建ProductInstance的唯一方法是通过Product类中的工厂方法。在Java中,我会将ProductInstance放在与Product相同的包中,但将其构造函数设为packageprivate,这样只有Pr

java - 在 Java 中访问 super() 类的私有(private)变量 - JChart2D

我在Java中扩展了一个类,它有一个私有(private)变量,我想在它被更改之前获取它的值。在父类(superclass)中没有访问此变量的方法。我试过super().m_zoomArea(变量在jChart2D的ZoomableChart类中)。当调用mouseDragged方法时,变量会更新。我已经重写了这个方法,想在更新之前获取变量的值。 最佳答案 您可以访问任何类的私有(private)变量,但这是一个坏主意,因为您违反了OOP的基本原则之一-封装。但有时程序员被迫打破它。这是解决您问题的代码:扩展类publicclass

java - 嵌入式 jetty : Different ports for internally- and externally-visible endpoints?

我有一个使用嵌入式Jetty作为服务器的REST应用程序。大多数端点需要公开可见(并内置适当的身份验证),但少数仅供内部使用。我想避免对这些进行身份验证的开销,而是使用防火墙来限制访问:外部可见端点在端口10000上提供服务,外部防火墙保持打开状态。内部可见的端点在端口20000上提供服务,外部防火墙阻止了该端口。但是,我不知道如何使用嵌入式Jetty实现这一点。我已经尝试实例化两个Server对象,一个在端口10000上注册了适当的servlet处理程序,另一个在端口20000上注册了适当的servlet处理程序。但是,只有第二次启动的服务器实例有效;对第一个启动的端点托管的端点的请

java - 用于静态成员初始化的静态 block 与私有(private)静态方法

静态变量可以用私有(private)静态方法或静态block初始化。两者之间有什么微妙的区别吗?是否存在无法使用静态方法初始化静态成员的情况?我发现后者更具可读性。静态block初始化:privatestaticintNUM_ITER;static{//OperationsNUM_ITER=//valfromaboveoperations.}私有(private)静态方法初始化:privatestaticintNUM_ITER=calculateNumIter();//Somemethodcommentonhowwearecalculating.privatestaticintcalc

Java native 方法。公共(public)与私有(private)

假设我们需要在native代码中实现一些java方法并将其公开给用户。我们知道所有的工作都是由native端完成的,即java代码的唯一职责是将用户提供的参数传递给native代码并返回结果。据此,java层可能有两种实现方式:通过使用直接向用户公开的native方法:publicnativeObjectdoSmth(Objectarg0,Objectarg1);通过使用围绕私有(private)本地方法的瘦公共(public)包装器:publicObjectdoSmth(Objectarg0,Objectarg1){returnnativeDoSmth(arg0,arg1);}pri

【ARM 嵌入式 编译系列 4.2 -- GCC 链接规范 extern “C“ 介绍】

文章目录extern"C"介绍extern"C"使用示例1.2.2作用场景上篇文章:ARM嵌入式编译系列4.1–GCC编译属性likely与unlikely学习下篇文章:ARM嵌入式编译系列5–GCC内建函数__builtin介绍extern“C”介绍extern“C”是一种链接规范,它用于告诉C++编译器按照C语言的方式来链接代码。这个关键字主要用于在C++代码中调用C语言的函数库。C++语言对函数进行了名字修饰(NameMangling),也就是说,C++编译器在编译函数的时候会给函数的名字添加一些额外的信息,例如函数的参数类型和数量。这样做的目的是为了支持函数的重载。然而,C语言不支持函

java - "has private access"泛型错误

我遇到了一个实际上可以自己解决的问题,但我仍然不明白为什么我的原始代码不起作用,或者是否有比我找到的解决方案更优雅的解决方案。我在这里展示了我的代码的简化版本。考虑以下抽象父类(superclass)X:publicabstractclassX{privateinti;publicvoidm1(Xx){x.i=1;m2(x);}publicabstractvoidm2(Xx);}当调用m1时,我们操作传递的实例的X的私有(private)字段,然后我们用该实例调用m2。我有几个X的子类,它们在某种意义上都是相似的,因为它们也声明了它们操纵的私有(private)成员。为了实现这一点,他

java - 私有(private)内部类字段的访问修饰符有什么意义吗?

假设我有一个外部类,里面有一个内部类。内部类有四个字段,带有所有可能的访问修饰符。classOuter{privateclassInner{publicintpublicField;protectedintprotectedField;intpackagePrivatefield;privateintprivateField;}voiddoSomethingWithFields(){Innerinner=newInner();inner.publicField=111;inner.protectedField=111;inner.packagePrivatefield=111;inne

java - java.util.Arrays 中的私有(private)静态类 ArrayList - 为什么?

在java.util.Arrays中定义了一个名为“ArrayList”的私有(private)静态类。它仅从Arrays.asList方法引用。这样做有什么好处?为什么不引用java.util.ArrayList?代码如下:/***@serialinclude*/privatestaticclassArrayListextendsAbstractListimplementsRandomAccess,java.io.Serializable 最佳答案 尽管privatestaticArrayList类与java.util.Array

java - 为什么 JUnit 5 默认访问修饰符更改为 package-private

为什么JUnit5中的默认访问修饰符是包私有(private)的?JUnit4中的测试必须公开。将其更改为package-private有什么好处? 最佳答案 WhyisthedefaultaccessmodifierinJUnit5package-private?这不是“默认”。技术上没有默认值。相反,在JUnitJupiter中,您可以选择:public、protected或package-private。Whatisthebenefitofchangingittopackage-private?好处是您不再有public类型。