异常如下:Exception in thread "main" java.lang.NullPointerException
at B.add(Test.java:27)
at Test.main(Test.java:57)
代码如下:接口U只有3个方法
abstract class CU implements U
{}
class A
{
CU createU(){
return new CU(){
public void ua(){
System.out.println("a");
}
public void ub(){
System.out.println("b");
}
public void uc(){
System.out.println("c");
}
};
}
}class B
{
static int id=0;
int i=0;
U []uArray; void add( U u ){
uArray[id]=u;
id++;
}
void cls(int n){
if(n==1){
for(i=0;i<uArray.length-1;i++)
uArray[i]=uArray[i+1];
}
else if(n>1&&n<=uArray.length){
if(n!=uArray.length)
for(i=n-1;i<uArray.length-1;i++)
uArray[i]=uArray[i+1];
}
id--;
}
void show(){
for(int i=0;i<uArray.length;i++){
System.out.println(uArray[i]);
}
}
}
class Test
{
public static void main(String args[]){
int i=0;
B b=new B();
A a[]=new A[5]; for(i=0;i<5;i++){
a[i]=new A();
b.add(a[i].createU());
}
b.show();
b.cls(3);
}
}
at B.add(Test.java:27)
at Test.main(Test.java:57)
代码如下:接口U只有3个方法
abstract class CU implements U
{}
class A
{
CU createU(){
return new CU(){
public void ua(){
System.out.println("a");
}
public void ub(){
System.out.println("b");
}
public void uc(){
System.out.println("c");
}
};
}
}class B
{
static int id=0;
int i=0;
U []uArray; void add( U u ){
uArray[id]=u;
id++;
}
void cls(int n){
if(n==1){
for(i=0;i<uArray.length-1;i++)
uArray[i]=uArray[i+1];
}
else if(n>1&&n<=uArray.length){
if(n!=uArray.length)
for(i=n-1;i<uArray.length-1;i++)
uArray[i]=uArray[i+1];
}
id--;
}
void show(){
for(int i=0;i<uArray.length;i++){
System.out.println(uArray[i]);
}
}
}
class Test
{
public static void main(String args[]){
int i=0;
B b=new B();
A a[]=new A[5]; for(i=0;i<5;i++){
a[i]=new A();
b.add(a[i].createU());
}
b.show();
b.cls(3);
}
}
interface U{
public void ua();
public void ub();
public void uc();
}abstract class CU implements U {
}class A {
CU createU() {
return new CU() {
public void ua() {
System.out.println("a");
} public void ub() {
System.out.println("b");
} public void uc() {
System.out.println("c");
}
};
}
}class B {
static int id = 0; int i = 0; U[] uArray;
public B(int j){
uArray = new U[j];
} void add(U u) {
uArray[id] = u;
id++;
} void cls(int n) {
if (n == 1) {
for (i = 0; i < uArray.length - 1; i++)
uArray[i] = uArray[i + 1];
} else if (n > 1 && n <= uArray.length) {
if (n != uArray.length)
for (i = n - 1; i < uArray.length - 1; i++)
uArray[i] = uArray[i + 1];
}
id--;
} void show() {
for (int i = 0; i < uArray.length; i++) {
System.out.println(uArray[i]);
}
}
}class Test {
public static void main(String args[]) {
int i = 0;
B b = new B(5);
A a[] = new A[5]; for (i = 0; i < 5; i++) {
a[i] = new A();
b.add(a[i].createU());
}
b.show();
b.cls(3);
}
}
而你却用到了uArray[id]=u;所以就会有空指针异常啦!
{
uArray = new U[i];
}你给A产生多少个的时候也给B产生多少个。