限制方法调用特定类(在接口范围内)

时间:2015-07-04 08:58:41

标签: java interface

有没有办法创建一个对特定方法有限制访问权限的接口?

示例:

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");
    }
}

可能会做到这一点,但稍后会被覆盖,所以这不会真正解决问题。

2 个答案:

答案 0 :(得分:1)

答案是。因为默认情况下Interface中的方法是公开的。如果要实现,请创建Abstract类并将方法声明为protected

public abstract class MyAbstractClass {


    protected void setComponent(Component);

    ...other methods...

}

答案 1 :(得分:0)

如果你正在使用final方法,请使用final,然后在setCompomonet()的末尾,调用一个新的抽象受保护方法,如realSetCompoment()。