interface U{
void metod1( ) ;
void metod2( ) ;
void metod3( ) ;
}
class A{
public static U makeU( ) {
return new U( ) {
public void metod1( ) {
}
public void metod2( ) {
}
public void metod3( ) {
}
} ;
}
}
class B {
public static U[ ] makeArU( int x) {
System .
out .
println ( "Array U has length" + x
) ; return new U[ x] ;
}
public static U[ ] fillU( U[ ] u) {
for ( int i = 0 ; i< u.length ; i++ ) {
u[ i] = A.makeU ( ) ;
System .
out .
println ( "u object id " + i
+ " added to U array" ) ; }
return u;
}
public static void callU( U[ ] u) {
for ( int i = 0 ; i < u.length ; i++ ) {
u[ i] .metod1 ( ) ;
u[ i] .metod2 ( ) ;
u[ i] .metod3 ( ) ;
}
}
}
public class Main {
public static void main
( String [ ] args
) { B.callU ( B.fillU ( B.makeArU ( 5 ) ) ) ;
}
}
aW50ZXJmYWNlIFV7CiAgICB2b2lkIG1ldG9kMSgpOwogICAgdm9pZCBtZXRvZDIoKTsKICAgIHZvaWQgbWV0b2QzKCk7Cn0KY2xhc3MgQXsKICAgIHB1YmxpYyBzdGF0aWMgVSBtYWtlVSgpewogICAgICAgIHJldHVybiBuZXcgVSgpIHsKICAgICAgICAgICAgcHVibGljIHZvaWQgbWV0b2QxKCl7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIm1ldG9kMSIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHB1YmxpYyB2b2lkIG1ldG9kMigpewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJtZXRvZDIiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwdWJsaWMgdm9pZCBtZXRvZDMoKXsKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigibWV0b2QzIik7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfQp9CmNsYXNzIEIgewogICAgcHVibGljIHN0YXRpYyBVW10gbWFrZUFyVShpbnQgeCkgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQXJyYXkgVSBoYXMgbGVuZ3RoIiArIHgpOwogICAgICAgIHJldHVybiBuZXcgVVt4XTsKICAgICAgICAgICAgfQogICAgcHVibGljIHN0YXRpYyBVW10gZmlsbFUoVVtdIHUpewogICAgICAgIGZvciAoaW50IGkgPSAwOyBpPHUubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdVtpXSA9IEEubWFrZVUoKTsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ1IG9iamVjdCBpZCAiK2krIiBhZGRlZCB0byBVIGFycmF5Iik7CiAgICAgICAgfQogICAgICAgIHJldHVybiB1OwogICAgfQogICAgcHVibGljIHN0YXRpYyB2b2lkIGNhbGxVKFVbXSB1KSB7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB1Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHVbaV0ubWV0b2QxKCk7CiAgICAgICAgICAgIHVbaV0ubWV0b2QyKCk7CiAgICAgICAgICAgIHVbaV0ubWV0b2QzKCk7CiAgICAgICAgfQogICAgfQp9CnB1YmxpYyBjbGFzcyBNYWluIHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCQlCLmNhbGxVKEIuZmlsbFUoQi5tYWtlQXJVKDUpKSk7CiAgICB9Cn0K