Java 删除kotlin中包装器类的样板文件

Java 删除kotlin中包装器类的样板文件,java,arraylist,kotlin,wrapper,boilerplate,Java,Arraylist,Kotlin,Wrapper,Boilerplate,我试图围绕java的ArrayList实现一个包装器。它将许多方法调用(如add,remove,removeIf,get)直接转发到实现ArrayList)。这个java类包含很多样板文件 public class JSONArray extends JSONType implements Iterable<JSONType> { private ArrayList<JSONType> data = new ArrayList<>(); p

我试图围绕java的
ArrayList
实现一个包装器。它将许多方法调用(如
add
remove
removeIf
get
)直接转发到实现
ArrayList
)。这个java类包含很多样板文件

public class JSONArray extends JSONType implements Iterable<JSONType> {

    private ArrayList<JSONType> data = new ArrayList<>();

    public JSONType get(int i) {
        return data.get(i);
    }
        public JSONArray add(int i, JSONType j) {
        data.add(i, j);
        return this;
    }
    public JSONArray add(JSONType j) {
        data.add(j);
        return this;
    }
    public JSONArray add(int i, String j) {
        data.add(i, new JSONString(j));
        return this;
    }
    public JSONArray add(String j) {
        data.add(new JSONString(j));
        return this;
    }
    public JSONArray add(int i, Double j) {
        data.add(i, new JSONDouble(j));
        return this;
    }
    public JSONArray add(Double j) {
        data.add(new JSONDouble(j));
        return this;
    }
    public JSONArray add(int i, int j) {
        return add(i, (double) j);
    }
    public JSONArray add(int j) {
        return add((double) j);
    }
    public JSONArray add(int i, Boolean j) {
        JSONBoolean b = j ? JSONBoolean.True : JSONBoolean.False;
        data.add(i, b);
        return this;
    }
    public JSONArray add(Boolean j) {
        JSONBoolean b = j ? JSONBoolean.True : JSONBoolean.False;
        data.add(b);
        return this;
    }
    public JSONArray addNull(int i) {
        data.add(i, JSONNull.Null);
        return this;
    }
    public JSONArray addNull() {
        data.add(JSONNull.Null);
        return this;
    }
公共类JSONArray扩展了JSONType实现Iterable{
private ArrayList data=new ArrayList();
公共JSONType get(int i){
返回数据。获取(i);
}
公共JSONArray添加(int i,JSONType j){
数据.添加(i,j);
归还这个;
}
公共JSONArray添加(JSONType j){
数据.添加(j);
归还这个;
}
公共JSONArray添加(int i,String j){
添加(i,新JSONString(j));
归还这个;
}
公共JSONArray添加(字符串j){
添加(新的JSONString(j));
归还这个;
}
公共JSONArray add(整数i,双j){
添加(i,新的JSONDouble(j));
归还这个;
}
公共JSONArray添加(双j){
添加(新的JSONDouble(j));
归还这个;
}
公共JSONArray添加(inti,intj){
返回加(i,(双)j);
}
公共JSONArray添加(int j){
返回加法((双)j);
}
公共JSONArray添加(int i,Boolean j){
JSONBoolean b=j?JSONBoolean.True:JSONBoolean.False;
数据.添加(i,b);
归还这个;
}
公共JSONArray添加(布尔j){
JSONBoolean b=j?JSONBoolean.True:JSONBoolean.False;
数据.添加(b);
归还这个;
}
公共JSONArray addNull(int i){
add(i,JSONNull.Null);
归还这个;
}
公共JSONArray addNull(){
data.add(JSONNull.Null);
归还这个;
}

有没有办法清理kotlin中的此样板代码?

ArrayList不是最终的。您可以从中继承并只重写需要更改的方法。

在kotlin中,您只需执行以下操作:

class JSONArray: JSONType, Iterable<JSONType> {

    private val data = mutableListOf<JSONType>();

    fun get(i: Int) = data.get(i)

    fun add(i: Int, j: JSONType) = data.add(i, j)
    fun add(j: JSONType) = data.add(j)
    // etc.
}

给我们看看你的代码。我很难理解它包含哪些样板文件,除非你把
=list.remove(element)
算作样板文件。@JBNizet我已经在帖子中添加了代码。那不是Kotlin,而是Java。你想写Kotlin类还是Java类?@JBNizet是的,这是我想要的/那是什么。Kotlin还是Java?
with(jsonArray) {
    add(foo)
    add(bar)
    add(0, baz)
}