在Java中遵循这样的约定: getter 方法无参数并以 get 开头,setter 方法单参数并以 set 开头。在 Kotlin 中我们可以直接表示为属性。 例如,我们写一个带setter和getter的Java类:
package com.easy.kotlin;
import java.util.Date;
public class Product {
Long id;
String name;
String category;
Date gmtCreated;
Date gmtModified;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public Date getGmtCreated() {
return gmtCreated;
}
public void setGmtCreated(Date gmtCreated) {
this.gmtCreated = gmtCreated;
}
public Date getGmtModified() {
return gmtModified;
}
public void setGmtModified(Date gmtModified) {
this.gmtModified = gmtModified;
}
}
然后,我们在Kotlin可以直接使用属性名字进行get和set操作:
@RunWith(JUnit4::class)
class ProductTest {
@Test fun testGetterSetter() {
val product = Product()
product.name = "账务系统"
product.category = "金融财务类"
product.gmtCreated = Date()
product.gmtModified = Date()
println(JSONUtils.toJsonString(product))
Assert.assertTrue(product.getName() == "账务系统")
Assert.assertTrue(product.name == "账务系统")
Assert.assertTrue(product.getCategory() == "金融财务类")
Assert.assertTrue(product.category == "金融财务类")
}
}
当然,我们还可以像在Java中一样,直接调用像product.getName()、product.setName(“Kotlin”)这样的getter、setter方法。