Java:如何将方法的访问限制到特定类?
下面是一个例子:
class A
{
List l = new List ();
list.insert("x");
}
class List
{
...
public void insert ()
{
/*insertion occurs*/
}
...
}
是否可以将insert()方法保持为公共的,但只限制对类A的访问,以便只有在从类A调用时,其他类才能访问它
你可以在下面搜索框中键入要查询的问题!
下面是一个例子:
class A
{
List l = new List ();
list.insert("x");
}
class List
{
...
public void insert ()
{
/*insertion occurs*/
}
...
}
是否可以将insert()方法保持为公共的,但只限制对类A的访问,以便只有在从类A调用时,其他类才能访问它
# 1 楼答案
使用访问修饰符可以做的最好的事情是使方法包私有(删除
public
关键字),并且只在同一个包中保留这两个类# 2 楼答案
如果前面答案中的所有“内部类”内容都让您感到困惑,那么还有一种更直观的方法(假设您已经了解了
extends
关键字和继承)。您可以简单地使insert()
方法protected
代替public
,并使class A
扩展List
。例如:只要没有其他类扩展List,只有类型为
A
和List
的对象才能使用insert()
方法# 3 楼答案
如果方法是公共的,每个人都可以访问它。像您这样访问控制的诀窍是通过接口公开一组公共操作,将辅助操作添加到实现接口的私有类中,并使用户对接口而不是类进行编程
以下是一个例子:
使用场景:
# 4 楼答案
# 5 楼答案
我将把调用该方法的对象作为参数传递,即
然后检查传递的对象是否是类A的实例
# 6 楼答案
是的,您可以将调用对象作为参数传递,并在实际代码之前插入一个check-in insert()方法
请注意,这将允许扩展A的所有类以及调用insert。如果只想限制A类,请添加附加检查
我们还可以实现第二种情况,只需要条件“obj.getClass().getSimpleName().equals(“A”)”