我想知道是否有任何方法可以更改与非静态内部类关联的外部类引用。例如,在下面的代码中,我可以将i的外部类引用更改为指向o而不是o1?
/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class outer {
public class inner {
};
}
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
outer o1 = new outer(), o = new outer();
outer.inner i = o1.new inner();
//i.outer.this = o;
}
}
先谢谢
答案 0 :(得分:1)
没有。每个内部类实例都包含对其包含的外部类实例的隐式引用。如果你想改变这些类之间的关系,你可能最好从外部类中提取内部,并让它们像普通类一样明确地相互依赖。