从C#获取/设置为Java

Ich*_*San 3 c# java get set

我正在开发一个将ac#项目翻译成Java的项目.我在C#中有以下Get/Set块

 public Unit[] Units
{
    get
    {
        Unit[] units_aux = new Unit[this.list_units.Count];
        this.list_units.CopyTo(units_aux);
        return units_aux;
    }
    set
    {
        if (value == null) return;
        Unit[] units_aux = (Unit[])value;
        this.list_units.Clear();
        foreach (Unit u in units_aux)
            this.lista_units.Add(u);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想将它翻译成Java,但我没有成功翻译它没有语法错误.我是Java的新手,所以也许这是一个基本问题,但我没有找到任何关于如何做到这一点的信息,不会产生错误.

谢谢你的帮助

Jon*_*eet 11

你基本上必须将它转换为一对方法:

public Unit[] getUnits() {
    // Method body
}

public void setUnits(Unit[] value) {
    // Method body
}
Run Code Online (Sandbox Code Playgroud)

Java没有语言级别的属性- 上面基本上只是一个(非常常见的)约定.

顺便说一句,我应该注意这个C#代码真的不是很好:

  • 有一种更简单的方法可以将数组转换为列表,反之亦然
  • 当我期望它抛出异常时,setter会忽略 null值
  • 通过克隆数组,如果设置属性然后修改数组内容,它就没有普遍预期的行为(至少,我的期望).无论如何,将数组作为属性类型通常是一个坏主意; 如果你可以让它成为一个只读集合,那将更好,让生活简单.

  • 除此之外:只需写私人单位[]; 并且你将能够自动生成getter和setter.在Eclipse中:Source - "生成Getters和Setters ......".猜猜其他IDE具有相同的功能. (3认同)