Java 如何使用特定于getter和setter的autogenerate创建Kotlin注释类

Java 如何使用特定于getter和setter的autogenerate创建Kotlin注释类,java,android,kotlin,annotations,Java,Android,Kotlin,Annotations,我将转储的任何部分转换为Kotlin接口以进行访问: interface IDumpData { // block 0 val id: UInt get() = blocks[0].getUIntAt(0) val crc: UByte get() = blocks[0][4].toUByte() //unsigned char unused_0[11];

我将转储的任何部分转换为Kotlin接口以进行访问:

interface IDumpData {
        //  block 0
        val id: UInt
            get() = blocks[0].getUIntAt(0)
        val crc: UByte
            get() = blocks[0][4].toUByte()
        //unsigned char unused_0[11];
    
        // block 60
        val version: UShort
            get() = blocks[60].getUShortAt(0)
        val type: UByte
            get() = blocks[60][2].toUByte()
        val data1: UInt
            get() = blocks[60].getUIntAt(2 + 1)
        val data2: UShort
            get() = blocks[60].getUShortAt(2 + 1 + 4)
        val data3: UShort
            get() = blocks[60].getUShortAt(2 + 1 + 4 + 2)
        val data4: UShort
            get() = blocks[60].getUShortAt(2 + 1 + 4 + 2 + 2)
        val size: UShort
            get() = blocks[60].getUShortAt(2 + 1 + 4 + 2 + 2 + 2)
        //unsigned char unused_60;
    
        var blocks: Array<ByteArray>// Array(64) { ByteArray(16) }
    }

接口IDumpData{
//块0
valid:UInt
get()=块[0]。GetUIStat(0)
val-crc:UByte
get()=块[0][4].toUByte()
//未使用的无符号字符_0[11];
//第60区
val版本:UShort
get()=块[60]。getUShortAt(0)
val类型:UByte
get()=块[60][2].toUByte()
val data1:UInt
get()=块[60]。getUIntAt(2+1)
val数据2:UShort
get()=块[60]。getUShortAt(2+1+4)
val data3:UShort
get()=块[60]。getUShortAt(2+1+4+2)
val data4:UShort
get()=块[60]。getUShortAt(2+1+4+2+2)
val尺寸:UShort
get()=块[60]。getUShortAt(2+1+4+2+2+2)
//未使用的无符号字符60;
变量块:数组//数组(64){ByteArray(16)}
}
如何创建一个Kotlin注释类,根据字段位置和字段类型自动设置getter和setter? 所以最后看起来是这样的:

@DumpToClass
interface IDumpData {
    //  block 0
    @Block(0) val id: UInt
    @Block(0) val crc: UByte
    //unsigned char unused_0[11];

    // block 60
    @Block(60) val  version: UShort
    @Block(60) val type: UByte
    @Block(60) val data1: UInt
    @Block(60) val data2: UShort
    @Block(60) val data3: UShort
    @Block(60) val data4: UShort
    @Block(60) val size: UShort
    //unsigned char unused_60;

    var blocks: Array<ByteArray>// Array(64) { ByteArray(16) }
}
@DumpToClass
接口IDumpData{
//块0
@块(0)值id:UInt
@块(0)值crc:UByte
//未使用的无符号字符_0[11];
//第60区
@块(60)val版本:UShort
@块(60)val类型:UByte
@块(60)val数据1:UInt
@块(60)val数据2:UShort
@块(60)val数据3:UShort
@块(60)val数据4:UShort
@块(60)val尺寸:UShort
//未使用的无符号字符60;
变量块:数组//数组(64){ByteArray(16)}
}

希望有人能证明我错了,但我不认为只有一个注释处理器就可以做到这一点。你需要一个编译器插件,这要困难得多。请参阅和作为起点。感谢您提供此起点!我会试试的。希望有人能证明我错了,但我不认为你能只用一个注释处理器就做到这一点。你需要一个编译器插件,这要困难得多。请参阅和作为起点。感谢您提供此起点!我要试试看。