问题描述
- java调用super 可以不放在第一行?
-
今天看mybatis插件源码时候,发现SqlSessionTemplate中有这么一行:
不能理解:java调用super()不是必须放在构造器的第一行吗? 为什么这里不是放在第一行?
解决方案
应该是不可以的呀!
楼主的代码真的是源码 吗?是不是通过反编译工具反编译出来的,反编译工具在做反编译的时候可能会出问题的。
解决方案二:
如果是构造函数,不可以,其他可以
解决方案三:
找到答案时。希望楼主分享一下
解决方案四:
this() super()是你如果想用传入当前构造器中的参数或者构造器中的数据调用其他构造器或者控制父类构造器时使用的,在一个构造器中你只能使用this()或者super()之中的一个,而且调用的位置只能在构造器的第一行,在子类中如果你希望调用父类的构造器来初始化父类的部分,那就用合适的参数来调用super(),如果你用没有参数的super()来调用父类的构造器(同时也没有使用this()来调用其他构造器),父类缺省的构造器会被调用,如果父类没有缺省的构造器,那编译器就会报一个错误。
也就是说你必须在构造器的第一行放置super或者this构造器,否则编译器会自动地放一个空参数的super构造器的,其他的构造器也可以调用super或者this,调用成一个递归构造链,最后的结果是父类的构造器(可能有多级父类构造器)始终在子类的构造器之前执行,递归的调用父类构造器。无法执行当前的类的构造器。也就不能实例化任何对象,这个类就成为一个无为类。
解决方案六:
不可以的我是初学者了解的不很好只能帮到这了
解决方案七:
构造函数的话,一定要放在第一行
解决方案八:
super超类我看到的好像都是在第一行啊,所以应该是只能放在第一行。
解决方案九:
你说的对,应该是反编译器的问题
时间: 2024-08-03 21:25:44