我有一个类(Capsule),它有很多受保护的方法(30+)。这个想法是允许开发人员扩展这个类并使用类中的受保护方法(ImADev),但让开发人员将它们公开为公共(覆盖他们认为合适的方法)。
我现在有一个用例,我想将这些对象传递给一些实用程序类/方法,并允许它们访问受保护的方法..除非它们受到保护,所以我的实用程序类/服务看不到它们。
请参见下面的示例:
// My Capsule class with protected methods
public abstract class Capsule {
public Capsule(..) { .. }
protected String getFoo() { return "foo"; }
}
// How a dev should use the class
public class ImADev extends Capsule {
public ImADev(..) { super(..); }
public String getBar() { this.getFoo() + "BAR");
}
// A special utility class
// Helper.helper() can accept any class derived from Capsule
public class Helper {
public String helper(Capsule c) {
return " im doing something awesome with " + c.getFoo();
// Except i cant do this, because c.getFoo() is protected.
}
}
解决这个问题的最佳方法是什么?请记住,我有很多受保护的方法。