RT.. 代码如下:class A
{
private interface D
{
void f();
}
private class DImp implements D
{
public void f() {}
}
public class DImp2 implements D
{
public void f() {}
}
public D getD() { return new DImp2(); }
private D dRef;
public void receiveD(D d)
{
dRef = d;
dRef.f();
}
}public class NestingInterfaces
{
public static void main(String[] args)
{
A.DImp2 di2 = a.getD();
a.getD().f();
}
}编译时A.DImp2 di2 = a.getD() 和 a.getD().f(); 都会提示出错.书上的解释是:
A.DImp2 只能被当作它自己的类型来用,你不能透露任何"它实现了一个private接口"的信息,
因此实现private按口就成了一种"牵制你去定义那个接口的方法,但是又不让你添加任何类型信息(也就是说不允许上传)"的手段了.但看多遍也不明白. 请指教. 谢谢.
{
private interface D
{
void f();
}
private class DImp implements D
{
public void f() {}
}
public class DImp2 implements D
{
public void f() {}
}
public D getD() { return new DImp2(); }
private D dRef;
public void receiveD(D d)
{
dRef = d;
dRef.f();
}
}public class NestingInterfaces
{
public static void main(String[] args)
{
A.DImp2 di2 = a.getD();
a.getD().f();
}
}编译时A.DImp2 di2 = a.getD() 和 a.getD().f(); 都会提示出错.书上的解释是:
A.DImp2 只能被当作它自己的类型来用,你不能透露任何"它实现了一个private接口"的信息,
因此实现private按口就成了一种"牵制你去定义那个接口的方法,但是又不让你添加任何类型信息(也就是说不允许上传)"的手段了.但看多遍也不明白. 请指教. 谢谢.
A a = new A();
^^^^^^^
public D getD()
^^^^^^
import javax.swing.*;class A
{
public interface D
{
void f();
}
private class DImp implements D
{
public void f() {}
}
public class DImp2 implements D
{
public void f() {}
}
public D getD() { return new DImp2(); }
private D dRef;
public void receiveD(D d)
{
dRef = d;
dRef.f();
}
}public class Test
{
public static void main(String[] args)
{
A a = new A();
A.DImp2 di2 = (A.DImp2)a.getD();
a.getD().f();
}
}