接口有点像合约,当它在一个类中实现时,你可以保证这个类有一组你可以调用的特定公共方法。
我想知道如何将这个原则用于属性;即具有一个接口,当一个类实现它时,我保证这个类有一组特定的属性。
我正在寻找此功能,因为我正在使用Protobuf,并且此库要求您要序列化的类具有特定属性(例如XmlType
,但其他类似属性也有效)。我想操纵一组对象,无论它们是什么类型,只要它们具有这个特定的属性。
答案 0 :(得分:2)
我不知道你怎么能用接口做到这一点。 但是,您可以使用具有所需属性的方法的抽象类来完成此操作。 这些方法将调用摘要方法,然后必须实现这些方法。 例如:
public abstract class A
{
[XmlType]
public void F()
{
InnerF();
}
protected abstract InnerF();
}
public class B extends A
{
protected void InnerF()
{
}
}
另一个选项是运行一个后期构建工具,它将验证您定义的规则的代码。 看看here