草庐IT

protecting

全部标签

swift - Swift 模块/类如何解决缺少对 "protected"成员的语言支持的问题?

我遇到这样一种情况,我在模块中定义了一个可重用的基类,我想提供某些只能由子类而不是该子类的外部用户调用的函数。我正在编写一个框架并将其打包为Swift模块。我的框架的一部分包括一个基类,可以对其进行子类化以添加功能,但是派生类也有更进一步的外部目的。想象一下定义一种新的View:它派生自UIView或NSView,然后提供额外的逻辑,然后由另一方实例化。在这种情况下,我是定义类似于UIView的类的人,该类旨在被子类化,并且随之而来的是许多私有(private)UIView内部东西,比如测量、安排,谁知道呢,内部的东西。关键是,这个新View类的最终用户不想看到支持子类化的体系结构的内

java - JLS哪一部分说匿名类不能有public/protected/private成员类

考虑这段代码:publicclassTopLevelClass{Cloneablec=newCloneable(){privateintprivateField;privatevoidprivateMethod(){};};}有一个匿名类有一个private成员字段和一个private成员方法。编译成功。然后考虑这个:publicclassTopLevelClass{Cloneablec=newCloneable(){privateclassPrivateInnerClass{}};}有一个匿名类有一个private成员(member)类。然而……javac说:error:modifi

java - 非法访问错误 : accessing a protected method

我有两个类(class)。类A有protected方法m(),a是A的一个实例。类B与类A在同一个包中。我正在尝试访问a.m()但我收到了IllegalAccessError...怎么了? 最佳答案 编译器应该捕获这样的错误。由于您显然是在运行时得到这个,所以发生了一些奇怪的事情。可能您已更改源代码但已完全重新编译。另一个潜在但模糊的问题是通过不同的类加载器加载类。即使包名相同,从不同的类加载器加载的类也会在不同的包中(同理不同类加载器加载的同名类将是不同的类)。 关于java-非法访问

java - 无法从不同 jar 中的同一包访问父类(super class)的 protected 成员

我遇到了一个奇怪的问题,我无法弄清楚在尝试插件化我的程序时弹出的问题。另一个问题是我无法创建一个简单的测试用例,因为每次我尝试它都会成功。一定有一些我遗漏的并发症。但我会尽可能清楚地描述情况,以免任何人听起来很熟悉。我有一个名为Seed的基类,它是主应用程序的一部分,由系统类加载器加载。我有一个插件,其中包含一个Road类,它是Seed的一个子类。它在运行时从一个单独的jar文件加载。类Road引用了字段Seed.garden,其定义为:protected最后花园;请注意,我没有收到编译错误。当插件jar包含在系统类路径中时,我也不会收到运行时错误。只有当我的主应用程序使用新的类加载器

java - 为什么Joda Time中LocalTime的getLocalMillis()是 protected 方法?

我想将joda时间LocalTime转换为毫秒或毫秒。我看到getLocalMillis是一种protected方法。看起来没有办法获取LocalTime的毫秒值。那么,我是否必须以毫秒为单位获取每个字段的值,然后将它们相加以获得总毫秒值?为什么JodaTime没有获取LocalMillis的公共(public)方法? 最佳答案 LocalTime不代表绝对的即时时间,而是描述任意时区的任何一天的时间。通过LocalTime#toDateTimeToday()将您的LocalTime渲染为DateTime或LocalTime#toD

java - 为什么另一个包中的子类无法访问 protected 方法?

我在两个不同的包中有两个类:packagepackage1;publicclassClass1{publicvoidtryMePublic(){}protectedvoidtryMeProtected(){}}packagepackage2;importpackage1.Class1;publicclassClass2extendsClass1{doNow(){Class1c=newClass1();c.tryMeProtected();//ERROR:tryMeProtected()hasprotectedaccessinClass1tryMeProtected();//Noerro

Java:跨包的 protected 访问

我想了解下面示例中发生的情况(通过子类从包外部访问protected成员)。我知道对于包外的类,子类只能通过继承才能看到protected成员。有两个包:package1和package2。package1:ProtectedClass.javapackageorg.test.package1;publicclassProtectedClass{protectedvoidfoo(){System.out.println("foo");}}package2:ExtendsprotectedClass.javapackageorg.test.package2;importorg.test.

java - 为什么 protected 可以在同一个包中访问而无需在 java 中继承?

这个问题在这里已经有了答案:Whydoesthe"protected"modifierinJavaallowaccesstootherclassesinsamepackage?(6个答案)关闭6年前。ModifierClassPackageSubclassWorldpublicYYYYprotectedYYYNnomodifierYYNNprivateYNNNpublicclassa{protectedintx;}publicclassb{b(){aA=newa();A.x=9;//whywecanaccessthisfield?}}请帮我了解下protected在Java中的具体工作

java - protected 成员从 java 中的不同包访问 - 一个好奇心

这个问题在这里已经有了答案:UnderstandingJava'sprotectedmodifier(6个答案)关闭3年前。packagepackageOne;publicclassBase{protectedvoiddisplay(){System.out.println("inBase");}}packagepackageTwo;publicclassDerivedextendspackageOne.Base{publicvoidshow(){newBase().display();//thisisnotworkingthrowscompilationerrorthatdispla

java - 抽象类中的 protected 数据

我的问题具体涉及Java、抽象类和protected数据的使用。我被告知所有数据都应该是私有(private)的,并且只使用protectedgetter/setter。现在,我明白我们想要保护数据免受类的临时用户的直接操作,而公共(public)数据成员通常是一种有问题的做法。我看过“Javaprotectedfieldsvspublicgetters”(Javaprotectedfieldsvspublicgetters),但我仍然怀疑:protectedinti;在抽象类中比:privateinti;protectedintgeti();protectedvoidseti(int