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