调用super()必须是方法内的第一条语句消息

con*_*ter 0 java super spring-boot

这是我的基类:

@Service
public class BasicUserManagerService implements UserManager {
    @Autowired
    private UserRepository UserRepository;

    private Logger logger = LoggerFactory.getLogger(UserManagerPasswordController.class);

    @Override
    public void createUser(User User) {
        if (UserRepository.findByEmail(User.getEmail()) != null)
            throw new InvalidDataException("User already registered with this email address");
        UserRepository.save(User);
        logger.info("Created user: {}", User.getEmail());
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图扩展这个类如下:

@Service
public class UserManagerService extends BasicUserManagerService implements UserManager {
    @Override
    public void createUser(User User) {
        super().createUser(User);
    }
}
Run Code Online (Sandbox Code Playgroud)

但我一直得到的错误是对super()的调用必须是构造函数体中的第一个语句.正如你所看到的,我没有构造函数,即使我添加它,我也会得到同样的错误.为什么会发生这种情况,我该如何避免呢?

dro*_*wny 5

更改此super用法.super()是父的构造函数.super是对父类的引用.

@Service
public class UserManagerService extends BasicUserManagerService implements UserManager {
    @Override
    public void createUser(ProxyCircuitUser proxyCircuitUser) {
        super.createUser(proxyCircuitUser);
    }
}
Run Code Online (Sandbox Code Playgroud)