Home » c# » does java have something similar to C# properties? [duplicate]

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

Posted by: admin November 29, 2017 Leave a comment

Questions:

This question already has an answer here:

Answers:

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; }
}

Questions:
Answers:

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.

Questions:
Answers:

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");

Questions:
Answers:

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:

Questions:
Answers:

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.

Leave a Reply

Your email address will not be published. Required fields are marked *