'Does java have something similar to C# properties? [duplicate]

C# properties (I mean get and set methods) are a very useful feature. Does java have something similar to C# properties too? I mean how we can implement something like the following C# code in java:

public string Name
{
    get
    {
        return name;
    }

    set
    {
        name = value;
    }
}


Solution 1:[1]

No, Java does not have the equivalence. It only has accessor and mutator methods, fancy names for getter and setter methods. For example:

public class User {
    private String name;

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

Solution 2:[2]

You could have a look at Project Lombok as it tries to take the pain out of writing boiler plate Java code. It allows you to either use @Getter and @Setter annotations, which will provide getBlah() and setBlah() methods:

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

Or you can just use @Data and it will automatically implement your hashCode(), equals(), toString() and getter methods, along with setters on non-final fields:

@Data public class DataExample {
  private String name;
}

Problems I have found with the project, however, are that it's all a bit voodoo, which can be off-putting, and that you have to install an Eclipse (or what ever) plugin to get auto compilation to work.

Solution 3:[3]

Properties are not only convenient in terms of writing getters and setters encapsulated in a unit , but also they provide a good syntax at the point of call.

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

while with getters and setters it is usually

Window.setTitle("New");

Solution 4:[4]

There has been a proposal to add C#-like support for properties (and events) to Java, but it looks like this is rejected for the next version of Java (Java 7).

See:

Solution 5:[5]

You can just declare a private variable, and write the methods by hand. However, if you are using Eclipse, you can click on a variable, select "Source" and "Generate getters and setters." This is about as convenient as C# properties.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Kevin Le - Khnle
Solution 2 Richard
Solution 3 Prasad Jadhav
Solution 4 Community
Solution 5 Larry Watanabe