java - 对 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() 的调用必须是构造函数主体中的第一条语句。如您所见,我没有构造函数,即使添加它,我也会收到相同的错误。为什么会发生这种情况,我该如何避免?
解决方案
更改此super
用法。super()
是父母的构造函数。super
是对父类的引用。
@Service
public class UserManagerService extends BasicUserManagerService implements UserManager {
@Override
public void createUser(ProxyCircuitUser proxyCircuitUser) {
super.createUser(proxyCircuitUser);
}
}
推荐阅读
- java - 在java中动态添加类对象到ArrayList
- ruby-on-rails - 带有全局安装 gem 的 rails rake 任务
- python-3.x - 当脚本显示有货时,如何让脚本发送一个通知?
- swift - 初始化泛型类型的占位符空变量
- gcc - ARM 处理器的 GNU 工具链是否提供对 ARM11 等经典处理器的支持?
- c# - 如何从进程名称中获取进程 ID?(C#)
- java - Android:为什么按下按钮时我的活动没有出现?
- reactjs - Console.log 在 React.js 的构造函数和渲染函数中打印两次值
- video - 比较两个视频然后缩小差异
- mongodb - 我们如何在 QUARKUS - MONGODB WITH PANACHE 中实现 MongoDB DBRefs?