Java是否具有与C#中的属性工作方式相同的“属性”?
问题内容:
在C#中,您可以使用属性使数据字段可公开访问(允许用户直接访问它),但仍保留对那些直接访问的字段执行数据验证的功能。Java是否有类似的东西?对于实例,假设存在一个具有以下实现的C#类(请参见下文):
public class newInt{
public newInt(){...}
public int x{
get{ return this.x }
set{ this.x = isValid(value) }
}
}
private static int isValid(int value){...}
在该类中的此定义允许用户在从数据字段“ x”中检索值并为其分配值时“自然”使用数据字段“ x”。以下是它在main中的用法。
public class Test{
public static void main(String[] args){
newInt a = new newInt();
a.x = 50;
int b = a.x;
}
}
问题是… java也可以做到这一点吗?如果是这样,它叫什么?
问题答案:
没有。
这就是Java具有getter / setter的原因。
在C#中,您通常会有类似以下内容:
public class SomeObject
{
private string _title = "";
public string Title { get { return _title; } set { _title = value; } }
}
// Or with Auto-Properties
public class SomeObjectAutoProperties
{
public string Title { get; set; }
}
Java getter / setter等效项为:
public class SomeObject
{
private String _title = "";
public string getTitle() { return _title; }
public void setTitle(String value) { _title = value; }
}