// 创建一个带三个方法的Interface U interface U { void method1(); void method2(); void method3(); }// 创建一个带有“用创建匿名内部类方式返回U的引用的”方法的类A class A { U returnU() { U uImpl = new U() { public void method1() { // 实现代码 } public void method2() { // 实现代码 } public void method3() { // 实现代码 } }; return uImpl; } };// 再创建一个包含一个U的数组的类B class B { U[] us; // 这个B应当有一个能将U的引用存进数组的方法 void setUs(int i, U uImpl) { us[i] = uImpl; } void setUs(U[] us) { this.us = us; }
// 以及一个能将数组中的引用(根据方法的参数)设成null的方法 void setNull(int i) { us[i] = null; } // 另外它还要有一个能遍历数组,并且能调用U的方法的方法 void traverse() { for (int i = 0; i < us.length; i++) { us[i].method1(); us[i].method2(); us[i].method3(); } } };public class Main { public static void main(String[] args) { // 创建一个长度为5的A的数组 A[] as = new A[5]; U[] us = new U[5]; for (int i = 0; i < as.length; i++) { as[i] = new A(); us[i] = as[i].returnU(); }
B b = new B(); // 用由A对象返回的U的引用填满B b.setUs(us); // 用B来回调A对象(回调我不会,此处未实现) // 从B里面删除掉一些U的引用 b.setNull(0); b.setNull(1); } }
interface U {
void method1();
void method2();
void method3();
}// 创建一个带有“用创建匿名内部类方式返回U的引用的”方法的类A
class A
{
U returnU() {
U uImpl = new U() {
public void method1() {
// 实现代码
} public void method2() {
// 实现代码
} public void method3() {
// 实现代码
}
}; return uImpl;
}
};// 再创建一个包含一个U的数组的类B
class B
{
U[] us; // 这个B应当有一个能将U的引用存进数组的方法
void setUs(int i, U uImpl) {
us[i] = uImpl;
} void setUs(U[] us) {
this.us = us;
}
// 以及一个能将数组中的引用(根据方法的参数)设成null的方法
void setNull(int i) {
us[i] = null;
} // 另外它还要有一个能遍历数组,并且能调用U的方法的方法
void traverse() {
for (int i = 0; i < us.length; i++) {
us[i].method1();
us[i].method2();
us[i].method3();
}
}
};public class Main
{
public static void main(String[] args)
{
// 创建一个长度为5的A的数组
A[] as = new A[5];
U[] us = new U[5];
for (int i = 0; i < as.length; i++) {
as[i] = new A();
us[i] = as[i].returnU();
}
B b = new B();
// 用由A对象返回的U的引用填满B
b.setUs(us); // 用B来回调A对象(回调我不会,此处未实现) // 从B里面删除掉一些U的引用
b.setNull(0);
b.setNull(1);
}
}