1

接口有点像一个契约,当它在一个类中实现时,你可以保证这个类有一组你可以调用的特定公共方法。

我想知道如何将这个原则用于属性;即有一个接口,当一个类实现它时,我保证这个类有一组特定的属性。

我正在寻找此功能,因为我使用的是Protobuf,并且此库要求您要序列化的类具有特定属性(XmlType例如,但其他类似属性也可以使用)。我想操作一组对象,无论它们的类型是什么,只要它们具有这个特定的属性。

4

1 回答 1

2

我不明白你怎么能用接口做到这一点。但是,您可以使用具有所需属性的方法的抽象类来做到这一点。这些方法将调用必须实现的抽象方法。例如:

public abstract class A
{
     [XmlType]
     public void F()
     {
          InnerF();
     }

     protected abstract InnerF();
}

public class B extends A
{
     protected void InnerF()
     {
     }
}

当然,另一种选择是运行一个后期构建工具,该工具将验证您的代码是否符合您定义的规则。看看这里

于 2013-10-19T12:36:03.883 回答