我有一个包含列表的类DB:
private List<User> users;
以及允许将用户添加到列表中的addUser方法
public User addUser(String name) {
另一个类User需要创建User类的实例,所以我尝试使用以下代码:
public User(String name) {
DB.addUser(name);
但是它返回了我无法对非静态方法进行静态引用的错误。我不知所措,因为要创建User类的实例,我必须把它放到列表中,但由于列表是私有的,我必须使用DB的方法,但我可以&# 39;没有出错就这样做......有没有办法解决这个问题?
答案 0 :(得分:0)
此函数以静态方式调用addUser
。
public User(String name) {
DB.addUser(name);
}
但是下面的这个函数需要实例化一个对象才能调用它(非静态)
public User addUser(String name) { ... }
所以将其改为
public static User addUser(String name) { ... }
或创建DB实例并调用方法
public User(String name) {
DB db = new DB();
db.addUser(name);
}
答案 1 :(得分:0)
似乎有些基础知识对你来说并不清楚。
会员总是私密的,为了与他们互动,你应该创建公共的设定者和吸气者。
public List getUsers(){ 回报用户; }
public void getUsers(List users){ this.users =用户; }
作为一个好的编码标准,命名应描述提供特定操作的行为 因此
用户addUser(字符串名称)
考虑到它的实际实现似乎很模糊,因为将User添加到列表中。
如果DB类是依赖项,那么它应该被实例化 假设您从main
调用此代码用户user = new User(); DB dbInstance = new DB(); dbInstance.setUsers(new ArrayList()); dbInstance.getUsers()添加(用户);
提供更具体的答案,等待进一步要求的详细信息