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; }
}
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.
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");
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:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With