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+


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM