web-dev-qa-db-ja.com

JavaはC#プロパティに似たものを持っていますか?

C#プロパティ(getおよびsetメソッドを意味する)は非常に便利な機能です。 does Java C#プロパティに似たものもあります。Javaで次のC#コードのようなものを実装する方法を意味します。

public string Name
{
    get
    {
        return name;
    }

    set
    {
        name = value;
    }
}

前もって感謝します

74
Nima Rikhtegar

いいえ、Javaには同等のものはありません。アクセサーメソッドとミューテーターメソッド、ゲッターメソッドとセッターメソッドの派手な名前のみがあります。例:

public class User {
    private String name;

    public String getName() { return this.name; }
    public void setName(String name) { this.name = name; }
}
86

Project Lombok を見ることができます。ボイラープレートJavaコードを書くことから苦痛を取り除こうとするためです。@ Getterと@Setterのいずれかを使用できます。 getBlah()およびsetBlah()メソッドを提供するアノテーション:

public class GetterSetterExample {
  @Getter @Setter private int age = 10;
}

または、単に@Dataを使用すると、hashCode()、equals()、toString()、およびgetterメソッドが、非最終フィールドのセッターとともに自動的に実装されます。

@Data public class DataExample {
  private String name;
}

しかし、このプロジェクトで見つけた問題は、それが少々ブードゥーであり、不快である可能性があり、自動コンパイルを機能させるにはEclipse(またはその他)プラグインをインストールする必要があるということです。

26
Ben Smith

プロパティは、ユニットにカプセル化されたgettersおよびsettersを書くという点で便利であるだけでなく、呼び出し時に適切な構文を提供します。

Window.Title =  "New"; //which looks natural

getterssettersを使用すると、通常は

Window.setTitle("New");
17
Renjith

プロパティ(およびイベント)のC#のようなサポートをJavaに追加する提案がありましたが、Java(Java 7)の次のバージョンでは拒否されているようです。

見る:

7
Jesper

プライベート変数を宣言するだけで、手動でメソッドを作成できます。ただし、Eclipseを使用している場合は、変数をクリックして、「ソース」および「ゲッターとセッターを生成」を選択できます。これは、C#プロパティとほぼ同じくらい便利です。

3
Larry Watanabe