package com.github.sevntu.checkstyle.checks.coding;
import java.io.IOException;
public class InputOverridableMethodInConstructorCheck9 {
public static void main(String args[]) throws IOException,
ClassNotFoundException, CloneNotSupportedException {
(new Object2()).clone();
}
private static class Object1 implements Cloneable {
private void doSmth() {
System.out.println("Bar!");
doSmth();
doSmth2(); // leads to call of overridable method
}
public void doSmth2() {
System.out.println("Bar2!");
}
@Override
protected Object clone() throws CloneNotSupportedException {
Object clone = super.clone();
((Object1) clone).doSmth(); // a warning here
doSmth2(); // a warning here
return clone;
}
}
static class Object2 extends Object1 {
private String value;
@Override
public void doSmth2() {
System.out.println(value);
}
@Override
protected Object clone() throws CloneNotSupportedException {
Object clone = super.clone();
((Object2) clone).value = "Foo!";
return clone;
}
}
}