有没有办法创建一个对特定方法有限制访问权限的接口?
示例:
public interface MyInterface {
/*
* I want to restrict access to this(and only this) method so only 1 specific class
* can call it. Is there a way of doing that?
*/
public void setComponent(Component);
...other methods...
}
修改
类似的东西:
public default void setComponent(Component component) {
StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
if(!stacktrace[1].getClassName().equals("MyClassName")){
throw new IllegalStateException("Method should not be called explicitly");
}
}
可能会做到这一点,但稍后会被覆盖,所以这不会真正解决问题。
答案 0 :(得分:1)
答案是否。因为默认情况下Interface
中的方法是公开的。如果要实现,请创建Abstract
类并将方法声明为protected
:
public abstract class MyAbstractClass {
protected void setComponent(Component);
...other methods...
}
答案 1 :(得分:0)
如果你正在使用final方法,请使用final,然后在setCompomonet()的末尾,调用一个新的抽象受保护方法,如realSetCompoment()。