内部类引用外部类对象
2017-11-28 19:28
197 查看
测试实体类
@Data
public class TestEn {
String ss;
Inner inner;
//@Data
public class Inner{
String s;
@Override
public String toString() {
return "Inner [s=" + s + "]";
}
public String getS() {
return s;
}
public TestEn setS(String s) {
this.s = s;
return TestEn.this;
}
}
public Inner create() {
return new Inner();
}
}
测试一
public static void main(String[] args) {
TestEn te1 = new TestEn();
te1.setSs("wai");
te1.setInner(te1.create());
TestEn te = new Gson().fromJson(new Gson().toJson(te1), TestEn.class);
System.out.println(te);
System.out.println(te.getInner().setS("nei"));
}
输出
TestEn(ss=wai, inner=Inner [s=null])
null
测试二
public static void main(String[] args) {
TestEn te1 = new TestEn();
te1.setSs("wai");
te1.setInner(te1.create());
//TestEn te = new Gson().fromJson(new Gson().toJson(te1), TestEn.class);
System.out.println(te1);
System.out.println(te1.getInner().setS("nei"));
}
输出
TestEn(ss=wai, inner=Inner [s=null])
TestEn(ss=wai, inner=Inner [s=nei])
1. 内部类引用外部对象使用 外部类名.this, 如 return TestEn.this;
2. 内部类的实体对象明确归属于外部类时, 才能使用 外部类名.this引用外部类实例, 如果由json转化而来的内部类实例没有从属关系则没有其对应的从属外部类实例
3. 所属内部类均为成员内部类
@Data
public class TestEn {
String ss;
Inner inner;
//@Data
public class Inner{
String s;
@Override
public String toString() {
return "Inner [s=" + s + "]";
}
public String getS() {
return s;
}
public TestEn setS(String s) {
this.s = s;
return TestEn.this;
}
}
public Inner create() {
return new Inner();
}
}
测试一
public static void main(String[] args) {
TestEn te1 = new TestEn();
te1.setSs("wai");
te1.setInner(te1.create());
TestEn te = new Gson().fromJson(new Gson().toJson(te1), TestEn.class);
System.out.println(te);
System.out.println(te.getInner().setS("nei"));
}
输出
TestEn(ss=wai, inner=Inner [s=null])
null
测试二
public static void main(String[] args) {
TestEn te1 = new TestEn();
te1.setSs("wai");
te1.setInner(te1.create());
//TestEn te = new Gson().fromJson(new Gson().toJson(te1), TestEn.class);
System.out.println(te1);
System.out.println(te1.getInner().setS("nei"));
}
输出
TestEn(ss=wai, inner=Inner [s=null])
TestEn(ss=wai, inner=Inner [s=nei])
1. 内部类引用外部对象使用 外部类名.this, 如 return TestEn.this;
2. 内部类的实体对象明确归属于外部类时, 才能使用 外部类名.this引用外部类实例, 如果由json转化而来的内部类实例没有从属关系则没有其对应的从属外部类实例
3. 所属内部类均为成员内部类
相关文章推荐
- Java.内部类方法对外部类对象的引用x-this.x-Test.this.x
- 非静态内部类、非静态匿名内部类会持有外部对象的引用
- 引用一个面试题:如果程序中没有任何变量引用一个外部类对象,但有变量引用其中的内部类对象,请问外部类对象是否会被垃圾回收器回收?请说明理由!
- 匿名内部类使用了一个在其外部定义的对象,为什么编译器会要求其参数引用是final呢
- 为什么在匿名内部类中引用外部对象要加final修饰符
- 匿名内部类引用外部对象要加final修饰符的原因
- 为什么在内部类中用外部类的对象要用final修饰
- vs2010 linq语法使用中如果用到外部定义的变量会报错 没有引用对象
- EffectiveC#01--避免返回内部类对象的引用
- “对象被多次指定;已忽略多余的指定”并伴有"无法解析的外部符号 "xxx",该符号在函数 "xxx"中被引用的错误"
- Java 局部 final 变量与内部类引用外部变量
- 内部类引用外部类的局部变量要用final修饰
- 为什么一个匿名内部类使用一个在其外部定的对象必须使用final修饰
- Spring 基于注解装配依赖对象和引用外部文件读取数据库配置
- JavaSE 基础 第44节 引用外部类的对象
- 内部类如果要引用外部类的变量,则该变量必须为final
- 内部类与外部类变量同名时,如何在内部类中引用外部类变量?
- 内部类引用外部类中的局部变量时,该变量需final
- Java - 内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?
- 外部类的静态方法内不能实例化内部类的对象