• Intellij Idea 新建Andorid工程,导入google:auto-value,使用案例


    1.在模块中导入com.google.auto.value:auto-value
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
    
        api "com.google.auto.value:auto-value-annotations:1.6"
        annotationProcessor "com.google.auto.value:auto-value:1.6"
    
    }
    

     但是编译后会报annotationProcessor() 找不到参数的错,导入net.ltgt.apt插件并引用即可。

    2.在项目的build.gradle中引入maven坐标和dependencies,并在模块中引用

    buildscript {
        
        repositories {
            google()
            jcenter()
            maven {
                url "https://plugins.gradle.org/m2/"
            }
        }
        dependencies {
            classpath "net.ltgt.gradle:gradle-apt-plugin:0.17"
            classpath 'com.android.tools.build:gradle:3.1.2'
    
        }
    }

    模块中引用:

    apply plugin: "net.ltgt.apt"

    在编译不会报错。

    3.编写java bean:

    package com.example.autovalue;
    
    
    import com.google.auto.value.AutoValue;
    
    @AutoValue
    public abstract class Animal {
        static Animal create(String name, int numbersOfLegs) {
            return new com.example.autovalue.AutoValue_Animal(name, numbersOfLegs);
        }
    
    
        public abstract String name();
    
        public abstract int numbersOfLegs();
    
    
    }

    类和方法均为abstract类型的。

    编写完毕后,Build-->Build Projcet重新构建项目。在build/generated目录中会出现AutoValue_Animal类。

    右键generated目录,mark  directory as  ----> source root,让编译器不报Cannot Symbol AutoValue_Animal的错误。

    其实已经生成AutoValue_Animal.class文件了,编译器报错也不影响运行。

    4.如果java bean实现了Parcelable类,则autuo-value会报错,需要导入autovalue-extension即可:

        annotationProcessor 'com.ryanharter.auto.value:auto-value-parcel:0.2.6'
    import android.os.Parcelable;
    import com.google.auto.value.AutoValue;
    
    @AutoValue
    public abstract class Animal implements Parcelable {
        public static Animal create(String name, int numbersOfLegs) {
            return new AutoValue_Animal(numbersOfLegs, name);
        }
    
        public abstract int numbersOfLegs();
    
        public abstract String name();
    
    }

    注意:auto-value生成类是immutable的,也就是说没有setter方法。不适合频繁更新的model

     google-autovalue:immutable value-type for java 1.6+

  • 相关阅读:
    调整压力测试工具转载ibm
    Python装饰器的使用
    python操作mysql数据库
    python进程与线程的操作
    python selenium框架的Xpath定位元素
    在Ubuntu Server 12.04 x64下安装Graphite
    SQLCLR(一)入门
    DataSet操作
    ASP.NET传递中文参数乱码的解决方法
    c#.net常用函数和方法集
  • 原文地址:https://www.cnblogs.com/DolphWang/p/9267444.html
Copyright © 2020-2023  润新知