有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java@AutoValue“找不到生成的符号类”错误

使用@AutoValue注释时,我得到“找不到生成的符号类”

public abstract  class Office{

public static Office create(String cityName, String companyName, String regionName) {
    return new AutoValue_Office(cityName, companyName, regionName);
}


public abstract String getCompanyName();
public abstract String getCityName();
public abstract String getRegionName();
}

梯度依赖 编译'com。谷歌。汽车值:自动值:1.0-rc1'

另外,如何只向equals和hashcode函数添加选定的属性


共 (1) 个答案

  1. # 1 楼答案

    问题是,您使用的Android版本没有注释javax。注释。生成(在Java6中添加)。您可以按照this question的答案中所述手动添加

    关于从equals和hashCode中排除某些属性的问题,目前还没有完美的方法。通常,这样做的愿望表明需要将应该包含在单独类中的属性分离,并在equals和hashCode中使用这些属性。或者,可以将非最终字段添加到Office类中并进行设置。例如,如果不包括regionName,您可以这样写:

    @AutoValue
    public abstract class Office {
      private String regionName;
    
      public abstract String getCompanyName();
      public abstract String getCityName();
      public String getRegionName() {
        return regionName;
      }
    
      public static Office create(String cityName, String companyName, String regionName) {
        Office office = new AutoValue_Office(cityName, companyName);
        office.regionName = regionName;
        return office;
      }
    }
    

    主要的缺点是regionName不是final,因此您无法从其他线程获得与其他属性相同的访问保证