在这个类中,我有构造函数接受4个参数。并且适当地初始化值。将int imageid设置为mImageId等。
如果成员变量由参数初始化,那么getter / setter序列的目的是什么?
从我读过的。每个字段或成员变量的getter / setter实质上使该类“公开”。或者getter / setter的目的是向另一个类广播一些“意图”?
public class Page {
private int mImageId;
private String mText;
private Choice mChoice1;
private Choice mChoice2;
public Page(int imageId, String text, Choice choice1, Choice choice2 ){
mImageId = imageId;
mText = text;
mChoice1 = choice1;
mChoice2 = choice2;
}
// start of getters/setters
public int getImageId(){
return mImageId;
}
public void setImageId(int id){
mImageId = id;
}
public String getText() {
return mText;
}
public void setText(String text) {
mText = text;
}
public Choice getChoice1() {
return mChoice1;
}
public void setChoice1(Choice choice1) {
mChoice1 = choice1;
}// Choice 1
public Choice getChoice2() {
return mChoice2;
}
public void setChoice2(Choice choice2) {
mChoice2 = choice2;
}// Choice 2
答案 0 :(得分:2)
这是一个可变类,这意味着即使在实例化时设置了初始状态,也可以在不创建新实例的情况下更改它。
您可能认为这是JavaBean,但由于它没有公开no-arg构造函数,getter或setter的名称也不匹配字段的名称,因此它不是严格按照惯例。
答案 1 :(得分:1)
setter可让您稍后更改变量的值。
getter允许您从另一个类访问变量的值。
在您的上下文中,我认为Page
描述了一些页面内容。现在,假设您将Page
对象传递给某种布局类,它将使用getters访问变量的值来呈现布局。由于变量被声明为私有,除了使用getter方法之外,没有其他方法可以访问它们。
答案 2 :(得分:1)
在构造对象后,您可能仍需要设置成员变量。
如果你不实现setter,这将有效地使类不可变,在某些情况下也可能是想要的行为。
那么,这取决于你在特定情况下的需求,不是强制性的。对于getter - 是的,如果你想阅读对象的内容,这是常见的方式。但它不需要是成员变量的1:1。
PS:我建议避免那些" m"前缀,这在Java中非常罕见,不提供任何实际价值并使代码可读性降低。答案 3 :(得分:0)
getter / setters使用JavaBean制作POJO。 有许多框架使用Bean标准来创建/操作Java对象。
例如,ORM框架可以从SQL查询创建Beans,JAX-RS框架可以从HTTP请求创建Beans等。
注意:Java Bean标准需要一个默认的无参数构造函数。
答案 4 :(得分:0)
没有问题,您可以根据自己选择任何setter / getter序列。
" public" java编译器(javac)使用关键字来访问包含main方法的类。
但是在java bean的情况下,类通常放在包中以获得适当的层次结构,因此要从不同的包访问这些类,我们需要创建类" public"。