'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 |