首页 > 解决方案 > 对 super() 的调用必须是方法内的第一条语句消息

问题描述

这是我的基类:

@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());
    }
}

我正在尝试将此类扩展如下:

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

但是我不断收到错误,即对 super() 的调用必须是构造函数主体中的第一条语句。如您所见,我没有构造函数,即使添加它,我也会收到相同的错误。为什么会发生这种情况,我该如何避免?

标签: javaspring-bootsuper

解决方案


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

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

推荐阅读