我的书里做了一些难以理解的练习。
“使用非默认构造函数(带有参数的一个)和没有默认构造函数(没有“ no-arg”的构造函数)创建一个类。创建第二个类,该第二个类的方法返回对第一个类的对象的引用。通过创建从第一个类继承的匿名内部类返回的对象。”
谁能提供源代码?
编辑:
我不明白最终的源代码应该是什么样子。我想到了这个:
class FirstClass
{
void FirstClass( String str )
{
print( "NonDefaultConstructorClass.constructor(\"" + str + "\")" );
}
}
class SecondClass
{
FirstClass method( String str )
{
return new FirstClass( )
{
{
print( "InnerAnonymousClass.constructor();" );
}
};
}
}
public class task_7
{
public static void main( String[] args )
{
SecondClass scInstance = new SecondClass( );
FirstClass fcinstance = scInstance.method( "Ta ta ta" );
}
}
最佳答案
老实说,除非您不了解或不了解内部类的定义,否则练习将非常简洁。您可以在此处找到匿名内部类的示例:
http://c2.com/cgi/wiki?AnonymousInnerClass
否则,此简要示例说明了该问题:
/** Class with a non-default constructor and no-default constructor. */
public class A {
private int value;
/** No-arg constructor */
public A() {
this.value = 0;
}
/** Non-default constructor */
public A(int value) {
this.value = value;
}
public int getValue() {
return this.value;
}
}
/** Class that has a method that returns a reference to A using an anonymous inner class that inherits from A. */
public class B {
public B() { ; }
/** Returns reference of class A using anonymous inner class inheriting from A */
public A getReference() {
return new A(5) {
public int getValue() {
return super.getValue() * 2;
}
};
}
}