/* package whatever; // don't place package name! */
import java.util.stream.*;
import java.util.*;
import java.lang.*;
import java.io.*;
interface Figure {
double square();
}
private final double width;
private final double height;
public Rectangle(final double width,
final double height
) { this.width = width;
this.height = height;
}
@Override
public double square() {
return width * height;
}
@Override
return String.
format("%s{ width = %f ; height = %f }",
getClass().getSimpleName(), width, height);
}
}
final class Circle implements Figure {
private final double radius;
public Circle(final double radius) {
this.radius = radius;
}
@Override
public double square() {
return Math.
PI * radius
* radius
; }
@Override
return String.
format("%s{ radius = %f }",
getClass().getSimpleName(), radius);
}
}
/* Name of the class has to be "Main" only if the class is public. */
class Ideone {
private static void printSquares(final Figure... figures) {
Stream.of(figures).forEach(f ->
System.
out.
printf("%s square = %f%n", f.
toString(), f.
square())); }
printSquares
(new Rectangle(3,
4),
new Circle
(2)); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uKjsKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgppbnRlcmZhY2UgRmlndXJlIHsKCQoJZG91YmxlIHNxdWFyZSgpOwp9CgpmaW5hbCBjbGFzcyBSZWN0YW5nbGUgaW1wbGVtZW50cyBGaWd1cmUgewoJCglwcml2YXRlIGZpbmFsIGRvdWJsZSB3aWR0aDsKCXByaXZhdGUgZmluYWwgZG91YmxlIGhlaWdodDsKCQoJcHVibGljIFJlY3RhbmdsZShmaW5hbCBkb3VibGUgd2lkdGgsIGZpbmFsIGRvdWJsZSBoZWlnaHQpIHsKCQl0aGlzLndpZHRoID0gd2lkdGg7CgkJdGhpcy5oZWlnaHQgPSBoZWlnaHQ7Cgl9CgkKCUBPdmVycmlkZQoJcHVibGljIGRvdWJsZSBzcXVhcmUoKSB7CgkJcmV0dXJuIHdpZHRoICogaGVpZ2h0OwoJfQoJCglAT3ZlcnJpZGUKCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CgkJcmV0dXJuIFN0cmluZy5mb3JtYXQoIiVzeyB3aWR0aCA9ICVmIDsgaGVpZ2h0ID0gJWYgfSIsCgkJCQlnZXRDbGFzcygpLmdldFNpbXBsZU5hbWUoKSwgd2lkdGgsIGhlaWdodCk7Cgl9Cn0KCmZpbmFsIGNsYXNzIENpcmNsZSBpbXBsZW1lbnRzIEZpZ3VyZSB7CgkKCXByaXZhdGUgZmluYWwgZG91YmxlIHJhZGl1czsKCQoJcHVibGljIENpcmNsZShmaW5hbCBkb3VibGUgcmFkaXVzKSB7CgkJdGhpcy5yYWRpdXMgPSByYWRpdXM7Cgl9CgkKCUBPdmVycmlkZQoJcHVibGljIGRvdWJsZSBzcXVhcmUoKSB7CgkJcmV0dXJuIE1hdGguUEkgKiByYWRpdXMgKiByYWRpdXM7Cgl9CgkKCUBPdmVycmlkZQoJcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKCQlyZXR1cm4gU3RyaW5nLmZvcm1hdCgiJXN7IHJhZGl1cyA9ICVmIH0iLAoJCQkJZ2V0Q2xhc3MoKS5nZXRTaW1wbGVOYW1lKCksIHJhZGl1cyk7Cgl9Cn0KCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUgewoJCglwcml2YXRlIHN0YXRpYyB2b2lkIHByaW50U3F1YXJlcyhmaW5hbCBGaWd1cmUuLi4gZmlndXJlcykgewoJCVN0cmVhbS5vZihmaWd1cmVzKS5mb3JFYWNoKGYgLT4KCQkJCVN5c3RlbS5vdXQucHJpbnRmKCIlcyBzcXVhcmUgPSAlZiVuIiwgZi50b1N0cmluZygpLCBmLnNxdWFyZSgpKSk7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbiB7CgkJcHJpbnRTcXVhcmVzKG5ldyBSZWN0YW5nbGUoMywgNCksIG5ldyBDaXJjbGUoMikpOwoJfQp9