Kotlin调用Java中的Getter 和 Setter

在Java中遵循这样的约定: getter 方法无参数并以 get 开头,setter 方法单参数并以 set 开头。在 Kotlin 中我们可以直接表示为属性。 例如,我们写一个带setter和getter的Java类:

  1. package com.easy.kotlin;
  2. import java.util.Date;
  3. public class Product {
  4. Long id;
  5. String name;
  6. String category;
  7. Date gmtCreated;
  8. Date gmtModified;
  9. public Long getId() {
  10. return id;
  11. }
  12. public void setId(Long id) {
  13. this.id = id;
  14. }
  15. public String getName() {
  16. return name;
  17. }
  18. public void setName(String name) {
  19. this.name = name;
  20. }
  21. public String getCategory() {
  22. return category;
  23. }
  24. public void setCategory(String category) {
  25. this.category = category;
  26. }
  27. public Date getGmtCreated() {
  28. return gmtCreated;
  29. }
  30. public void setGmtCreated(Date gmtCreated) {
  31. this.gmtCreated = gmtCreated;
  32. }
  33. public Date getGmtModified() {
  34. return gmtModified;
  35. }
  36. public void setGmtModified(Date gmtModified) {
  37. this.gmtModified = gmtModified;
  38. }
  39. }

然后,我们在Kotlin可以直接使用属性名字进行get和set操作:

  1. @RunWith(JUnit4::class)
  2. class ProductTest {
  3. @Test fun testGetterSetter() {
  4. val product = Product()
  5. product.name = "账务系统"
  6. product.category = "金融财务类"
  7. product.gmtCreated = Date()
  8. product.gmtModified = Date()
  9. println(JSONUtils.toJsonString(product))
  10. Assert.assertTrue(product.getName() == "账务系统")
  11. Assert.assertTrue(product.name == "账务系统")
  12. Assert.assertTrue(product.getCategory() == "金融财务类")
  13. Assert.assertTrue(product.category == "金融财务类")
  14. }
  15. }

当然,我们还可以像在Java中一样,直接调用像product.getName()、product.setName(“Kotlin”)这样的getter、setter方法。