抱歉标题不好,但我想不出更好的一个.
我有一个A类和一个B类,它是A的一个子类,就像这样:
(它实际上是否有正确的名称?是否为继承保留"子类"?)
class A {
int i = 0;
class B {
int j = 1;
}
}
class Test {
public static void main() {
A a = new A();
B b = a.new B();
A c = ??? b ??? // get "a" back
}
}
Run Code Online (Sandbox Code Playgroud)
从B可以访问A的每个属性,因此ai和bi都返回0.现在,我想知道是否有可能从b中检索A类型的原始对象,因为b包含a包含的所有内容?简单的铸造显然不能解决问题.
第二个:
class A {
void print() {
System.out.println("This is class A.");
}
class B {
void print() {
// <--- How to access print() of class A (like this.A.print() or smth)?
System.out.println("This is class B.");
}
}
}
Run Code Online (Sandbox Code Playgroud)
你也可以在这个主题上为我提供一些很好的资源,因为到目前为止我找到一个好的资源太愚蠢了.
提前致谢.:)
Joh*_*itb 21
似乎没有办法从外部访问外部类.但你可以这样做:
class A {
int i = 0;
class B {
final A outer = A.this;
int j = 1;
}
}
class Test {
public static void main() {
A a = new A();
A.B b = a.new B();
A c = b.outer // get "a" back
}
}
Run Code Online (Sandbox Code Playgroud)
ClassName.this 将是与内部类的实例关联的外部类的实例.
您可以使用ParentClass.this内部类中的语法访问它.
例如
public class Outter
{
class Inner {
public Outter getOutter()
{
return Outter.this;
}
}
public Inner getInner(){
return new Inner();
}
}
class Runner{
public static void main(String[] args){
Outter out = new Outter();
Outter.Inner inner = out.getInner();
System.out.println(inner.getOutter().toString());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16789 次 |
| 最近记录: |