Java Getter不与任何字段关联
以下代码出现编译器错误“Getter getLength\u inch未与任何字段关联”。getLength\u inch只是一个实用的方法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
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方法。
- 静态字段,包括公共字段和私有字段
- 静态方法
- 实现没有方法的接口
这在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();