java - 安装 Project Lombok 后处理 RealmObject 后代时出错

标签 java android realm lombok

这是我要存储在我的 Realm 数据库中的类。在构建应用程序时,它会抛出 “错误:如果声明了自定义构造函数,则必须声明不带参数的默认公共(public)构造函数。” 但在使用 realm 之前没问题 - 不需要默认构造函数。我还收到了这样的警告:Warning:(18, 1) Generating equals/hashCode implementation but without a call to superclass,即使这个类没有扩展 java.lang.Object。如果这是故意的,请将“@EqualsAndHashCode(callSuper=false)”添加到您的类型中。 如何修复错误?

import android.content.Context;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import java.util.ArrayList;

import io.realm.RealmObject;
import kg.zuber.aqe_android.R;
import lombok.Data;
import lombok.Getter;

@Data
public class Measure extends RealmObject {
    @Getter
    int id;
    @NonNull
    String name;
    @Getter
    @NonNull
    String slug;

    public Measure(int id, @NonNull String name, @NonNull String slug) {
        super();
        this.id = id;
        this.name = name;
        this.slug = slug;
    }

    @Override
    public String toString() {
        return this.name;
    }

    public static class MeasureAdapter extends ArrayAdapter<Measure> {
        private final Context mContext;
        private ArrayList<Measure> measures;

        public MeasureAdapter(Context context, ArrayList<Measure> mMeasures) {
            super(context, R.layout.blue_spinner_item, mMeasures);
            this.mContext = context;
            measures = mMeasures;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            Measure device = measures.get(position);
            if (convertView == null) {
                convertView = LayoutInflater.from(getContext())
                        .inflate(R.layout.blue_spinner_item, parent, false);
            }
            TextView textView = (TextView)convertView.findViewById(R.id.text);
            textView.setText(device.name);
            return convertView;
        }
    }
}

最佳答案

除了 @Data,您还可以使用以下内容:

@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper=false)

并删除手写的构造函数。

此外,您不需要 @Getter 注释。如果你想对字段进行空值检查,你应该使用 @lombok.NonNull 或导入它而不是 android.support.annotation.NonNull

披露:我是 lombok 开发者。

关于java - 安装 Project Lombok 后处理 RealmObject 后代时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37219075/

相关文章:

java - 引用中的编译模式引用

java - 使用协议(protocol) "mapi://"从 java 在 outlook 中打开邮件

android - intellij IDEA - 创建Android应用程序失败

android - 大型阵列对效率有多大影响?

android - 运行多个安卓模拟器

ios - 使用 Realm 存储来自 Foursquare 的附近位置

ios - 找不到 Realm 文件的加密 key

java - 将两个代码点表情符号放入字符串中?

java - Realm - 在应用程序之间共享数据库

java - 如何创建 Windows 可执行文件?