为Java中的只读接口模式考虑以下代码:
new Object()
package package2;
public interface AccountsReadOnly {
public String getValue();
}
package package1;
import package2.AccountsReadOnly;
class Accounts implements AccountsReadOnly {
private String name;
public Accounts() {
name = "unknown";
}
public String getValue() {
return name;
}
public void setValue(String name) {
this.name = name;
}
}
package package1;
public class Manager {
Accounts allAccess;
public Manager() {}
}
我无法理解此行,因为这是我第一次看到此格式:
package package2;
public class Employee {
public AccountsReadOnly accountReadOnly;
public Employee() {}
}
public class Demo {
public static void main(String[] args) {
Manager m = new Manager();
Employee e = new Employee();
Accounts a = new Accounts();
m.allAccess = a;
m.allAccess.setValue("Andrew");
System.out.println(m.allAccess.getValue());
e.accountReadOnly = a;
System.out.println(e.accountReadOnly.getValue());
}
}
因为它们具有相同的引用,是否可以代替此行使用?
m.allAccess.setValue("Andrew");
m.setValue("Andrew");
是对象的引用吗?
答案 0 :(得分:0)
因为它们具有相同的引用,是否可以代替此行?
否,m.setValue("Andrew");
不起作用,因为Manager
类没有功能setValue
m.allAccess
是对象的引用吗?
是的,allAccess
引用在以下行中设置的Account
对象:m.allAccess = a;
实际上应该将getValue
和setValue
方法分别命名为getName
和setName
,因为它们的作用。 setValue
应该返回一个值,例如帐户余额。
如果您有设置器,name
也不是只读的。