![]() |
1
1
假设你想要
那么问题就变成了,我如何才能阻止任何人创建
另一种不需要更改方法签名的替代方案是将线程本地安全上下文与Java安全管理器相同。这是通过分析对象请求权限时的堆栈跟踪来实现的,因此调用代码可以经过身份验证,然后根据安全策略进行授权。 |
![]() |
2
1
好吧,通过使方法成为类“a”的成员,它只能由该类的对象调用。
所以如果你有另一个“B”类的对象,它就不能调用
或者我在你的问题上遗漏了什么? 看来我有。 如果您还有另外两个类“c”和“d”,这两个类都包含对“a”实例的引用,那么这是另一个问题。 我想不出一个“好”的方法来做这件事。唯一能想到的是:
当你打电话的时候
但是,这并不能阻止代码编写器创建“c”类型的对象,将其传递到方法中:
|
![]() |
3
0
我需要澄清一下你所说的“特定课程”到底是什么意思…但我希望我的解释正确,因为您只希望类A的实例能够调用该方法。
在这种情况下,类A的任何实例都可以调用该方法:
但是,如果引用.setNumber()是一个静态方法,那么它就不能与实例没有关系。 如果只希望派生类(来自任何程序集)能够调用它:
在这种情况下,类B的任何实例 或 a可以调用setNumber(),但没有其他类可以看到或访问它。 如果只希望同一程序集中的所有实例类都能够调用它:
在这种情况下,与类“a”位于同一程序集中的任何类都可以像调用公共属性一样调用setNumber(),但其他程序集中包含的任何类都无法看到或引用它。在vb.net中,内部与“friend”相同。 如果只希望同一程序集中的派生类能够调用它:
在这种情况下,类B的任何实例 或 无论程序集是什么,都可以看到并引用setNumber();并且与类A在同一程序集中的任何类都将能够看到它或引用它,就好像它是公共的一样。 我认为这涵盖了所有的选择… |
![]() |
Vedant · 如何解决python啦啦队长问题?[已关闭] 2 年前 |
![]() |
cobby · 在战略模式中使用工厂模式? 2 年前 |
![]() |
Nobody · Java中带while循环的三角形模式 2 年前 |
![]() |
Eduard Stefanescu · 如何在层之间传输异常? 6 年前 |
![]() |
D. Schreier Talha Noyon · 对于目录中的每个类 6 年前 |
![]() |
Tanvi Jaywant · 如何重载类 6 年前 |