Java Getter不与任何字段关联

Java Getter不与任何字段关联,java,realm,Java,Realm,以下代码出现编译器错误“Getter getLength\u inch未与任何字段关联”。getLength\u inch只是一个实用的方法 import io.realm.RealmObject; public class Measurement extends RealmObject { private float length_mm; public void setLength_mm(float c){length_mm = c;} public float

以下代码出现编译器错误“Getter getLength\u inch未与任何字段关联”。getLength\u inch只是一个实用的方法

import io.realm.RealmObject;  
public class Measurement extends RealmObject {
    private float length_mm;

    public void setLength_mm(float c){length_mm = c;}
    public float getLength_mm() { return length_mm;}

    public float getLength_inch() { return length_mm * 0.0394f;}  
}
似乎RealmObject的任何后代都不能实现与its字段相关的任何其他功能。这是否正确,或者是否有某种方法对该方法进行注释,以便处理器忽略它

谢谢

似乎RealmObject的任何后代都不能实现与its字段相关的任何其他功能

这是正确的。成员变量只能有getter和setter

从文档中:

由于代理类如何覆盖模型类中的getter和setter,因此对模型类中允许的内容有一些限制:

  • 只有私有实例字段
  • 仅默认的getter和setter方法。
  • 静态字段,包括公共字段和私有字段
  • 静态方法
  • 实现没有方法的接口
这意味着当前不可能扩展RealmObject以外的任何内容,也不可能重写toString()或equals()等方法


这在0.87.4领域是正确的。我不知道这项限制何时解除。

我希望这项限制不受支持。使用
工厂
类实现此功能。编写一个包装类


为了解决realm.io目前不允许@Ignore on方法的限制,我使用了内部类,并将附加功能作为“扩展”放在其中。通过这种方式,主类保持最小,realm不会抱怨,但我得到了额外的功能,并保持了某种形式的优雅

public class Measurement extends RealmObject {
  private float length_mm;
  @Ignore
  private Extension ex;

  public void setLength_mm(float c){length_mm = c;}
  public float getLength_mm() { return length_mm;}

  public class Extension {
     public float getLength_inch() { return length_mm * 0.0394f;}  
  }
  public Extension getEx(){
    if (ex == null) ex = new Extension();
    return ex;
  }
然后我使用getEx()访问“扩展方法”


这一限制将在0.88中取消,但在此之前,上述情况是正确的。目前,我使用@Ignore注释添加了一个属性length_inch。不优雅,无缘无故地使用记忆,但这会一直持续到0.88。谢谢
float l = myMeasurement.getEx().getLength_inch();