java Method isSynthetic

来源:互联网 发布:网络系统培训 编辑:程序博客网 时间:2024/06/16 00:16

先看代码:

package com.reflect;import java.lang.reflect.Method;import junit.framework.TestCase;import static java.lang.System.out;public class TestSynthetic extends TestCase {public void testSynthetic() {try {Method[] methods = User.class.getDeclaredMethods();for (Method method : methods) {out.println(method.toString() + ", " + method.isSynthetic());}} catch (SecurityException e) {e.printStackTrace();}}class User {private int age;private String name;private User() {}private User(int age, String name) {this.age = age;this.name = name;}private int getAge() {return age;}private void setAge(int age) {this.age = age;}private String getName() {return name;}private void setName(String name) {this.name = name;}}}

运行testSynthetic,输出:

private java.lang.String com.reflect.TestSynthetic$User.getName(), falseprivate void com.reflect.TestSynthetic$User.setName(java.lang.String), falseprivate int com.reflect.TestSynthetic$User.getAge(), falseprivate void com.reflect.TestSynthetic$User.setAge(int), false

修改测试代码:

package com.reflect;import java.lang.reflect.Method;import junit.framework.TestCase;import static java.lang.System.out;public class TestSynthetic extends TestCase {public void testSynthetic() {try {User user = new User();user.age = 1;Method[] methods = User.class.getDeclaredMethods();for (Method method : methods) {out.println(method.toString() + ", " + method.isSynthetic());}} catch (SecurityException e) {e.printStackTrace();}}class User {private int age;private String name;private User() {}private User(int age, String name) {this.age = age;this.name = name;}private int getAge() {return age;}private void setAge(int age) {this.age = age;}private String getName() {return name;}private void setName(String name) {this.name = name;}}}

运行:

private java.lang.String com.reflect.TestSynthetic$User.getName(), falseprivate void com.reflect.TestSynthetic$User.setName(java.lang.String), falsestatic void com.reflect.TestSynthetic$User.access$1(com.reflect.TestSynthetic$User,int), trueprivate int com.reflect.TestSynthetic$User.getAge(), falseprivate void com.reflect.TestSynthetic$User.setAge(int), false

发现增加了一个方法:

static void com.reflect.TestSynthetic$User.access$1(com.reflect.TestSynthetic$User,int), true

这是编译器为这个类增加的,因为User这个内部类,全部的变量和方法,都是private的,但是外部程序要去调用,所以编译器做了这个工作。

上面只是修改了测试代码,并没有修改User这个内部类,就可以增加User的方法。


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 换驾驶证但是身份证地址变动怎么办 驾驶证b证扣分了怎么办 c1驾证过期没审怎么办 驾照报名三年过期了怎么办 新车行驶证过期了怎么办 行驶证忘了审怎么办 摩托车驾驶证副本丢了怎么办 人被全险车撞了怎么办 被全险车撞了怎么办 驾驶证和行驶证遗失怎么办 户口迁移身份证没换驾照怎么办 户口迁回时身份证掉了怎么办 户口毕业托管身份证掉了怎么办 身份证和户口都掉了怎么办 毕业生户口迁回原籍没身份证怎么办 落户上海后怎么办医保卡 小车临时牌过期了怎么办 驾驶证地址错了一个字怎么办 驾驶证名下车辆有违章怎么办 a2如果扣12分怎么办 b2一次超速12分怎么办 b2本扣了12分怎么办 驾照扣了27分怎么办 大车一次扣12分怎么办 a2驾照扣10分怎么办 驾驶证强制降级没给驾驶证怎么办 6P升11.2卡了怎么办 b2驾照记满12分怎么办 c1驾驶证没分了怎么办 驾照扣了15分怎么办 驾驶证暂扣六个月后怎么办 醉驾交警不通知怎么办 参军后地方驾驶证年审怎么办 军人驾驶证到期身份证注销了怎么办 资格证脱审30天怎么办 驾驶证c证扣6分怎么办 驾照被扣了9分怎么办 驾驶证被扣了9分怎么办 a2驾驶本扣3分怎么办 c1e没过扣了满分怎么办 c1一下扣12分怎么办