【问题标题】:Java equivalent of .net properties? [duplicate]Java相当于.net属性? [复制]
【发布时间】:2016-03-06 21:01:30
【问题描述】:

我正在寻找一个从 excel 文件中读取信息的小型应用程序,我们将使用它来更新 xml。

我非常熟悉 .net,我只需创建一个具有一些属性的新类来保存我从 excel 文件中提取的所有值

Public Class HouseNoteInfo
    Private _MessageText As String

    Public Property MessageText() As String
        Get
            Return _MessageText
        End Get
        Set(ByVal value As String)
            _MessageText = value
        End Set
    End Property

    Public Sub New(ByVal msgText As String)
        _MessageText = msgText
    End Sub
End Class

然后我将简单地创建一个类列表,我将能够有效地保持数据有序,并且能够提取我想要的项目

Public NoteList As New Generic.List(Of HouseNoteInfo)
...
NoteList.Add(New HouseNoteInfo(msgText))

我一直在尝试寻找 Java 的替代方案,但我不相信它们具有与 .net 相同的 getter/setter 方法,所以我只发现我可以创建一个包含我自己的新类的 HashMap获取和设置值的方法,但对我来说感觉很笨拙,只是想知道是否有更有效的方法来解决这个问题?

【问题讨论】:

  • 我相信我不太理解你的问题,代码在 Java 中以完全相同的方式直接翻译
  • Java 没有 C# 支持的属性。您要么必须使用 getter 和 setter,要么放弃封装并直接访问字段(将它们公开)。

标签: java excel


【解决方案1】:
public class HouseNoteInfo {

    private String messageText;
    private boolean enabled;  // to demonstrate getter/setter for booleans

    // constructor
    public HouseNoteInfo(String messageText) {
        this.messageText = messageText;
    }

    // getter
    public String getMessageText() {
        return messageText;
    }

    // setter
    public void setMessageText(String text) {
        this.messageText = text;
    }

    // getter for boolean prefixed with "is" instead of "get"
    public boolean isEnabled() {
        return enabled;
    }

    // setter
    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
    }

}

List<HouseNoteInfo> list = new ArrayList<>();
list.add(new HouseNoteInfo("message text"));

【讨论】:

    【解决方案2】:

    Java 没有这样的属性概念,但您可以对字段和方法做同样的事情。这基本上是一样的:

    public class HouseNoteInfo{
    
        private String messageText;
    
        public String getMessageText() {
            return messageText;
        }
    
        public void setMessageText(String messageText) {
            this.messageText = messageText;
        }
    
        public HouseNoteInfo(String messageText) {
            this.messageText = messageText;
        }
    }
    

    【讨论】:

      【解决方案3】:

      在java中可以这样使用

      public class HouseNoteInfo {
      
          private String messageText;
      
          public HouseNoteInfo(String msg) {
              this.messageText = msg;
          }
      
          /**
           * @return the messageText
           */
          public String getMessageText() {
              return messageText;
          }
      
          /**
           * @param messageText the messageText to set
           */
          public void setMessageText(String messageText) {
              this.messageText = messageText;
          }   
      }
      

      然后

      final List<HouseNoteInfo> noteList = new ArrayList<>();
      
      ...
      
      noteList.add(new HouseNoteInfo(msg));
      

      【讨论】:

        猜你喜欢
        • 2012-11-21
        • 2013-03-07
        • 2011-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-21
        • 2020-04-13
        • 2023-04-01
        相关资源
        最近更新 更多