转-Cannot refer to an instance field arg while explicitly invoking a constructor
2024-10-18 12:49:02
编译失败:
Cannot refer to an instance field arg while explicitly invoking a constructor 调用方法时不能引用一个实例变量
package arkblue.lang.javapuzzler.n53; class Thing {
public Thing(int i) { }
} public class MyThing extends Thing {
private final int arg; public MyThing() {
super(arg = Math.round(12L)); //编译失败
} }
解决办法:使用了交替构造器调用机制(alternate constructor invocation)
在这个私有构造器中,表达式SomeOtherClass.func()的值已经被捕获到了变量i中,并且它可以在超类构造器返回之后存储到final类型的域arg中
class SomeOtherClass {
static int func() {
return Math.round(12L);
}
} public class MyThing extends Thing {
private final int arg; public MyThing() {
this(SomeOtherClass.func());
} private MyThing(int i) {
super(i);
arg = i;
}
}
最新文章
- css个人总结
- IntelliJ设置鼠标悬浮提示和修改快捷键
- Node.js与Sails~中间查询语言Waterline
- [转] This Android SDK requires Android Developer Toolkit version 23.0.0 or above
- OpenCV 3.0 CvMat and cv::Mat Conversion
- php大力力 [030节] php设计系统后台菜单
- 实现系统函数time,获取当前时间与UTC的间隔
- python之supervisord启动脚本
- Node填坑教程——简易http服务器
- 快速高效掌握企业级项目中的Spring面向切面编程应用,外带讲面试技巧
- 电视盒子好用又强大的跨屏远程输入法 TVRemoteIME
- 访问 Tomcat支配项目去除项目名和端口号通过IP地址(或域名)访问
- .net mvc + layui做图片上传(一)
- redis 特性
- Pytorch学习笔记(二)---- 神经网络搭建
- Hello world &;博客客户端试用
- pycharm something
- 实验五 Java网络编程及安全 实验报告 20135232王玥
- 【Navicat_Premium_11.0.10】破解版
- Appium+python的单元测试框架unittest(3)——discover(转)