package com.github.sevntu.checkstyle.checks.coding;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import javax.xml.crypto.Data;
public class InputOverridableMethodInConstructorCheck13 {
public static void main(String args[]) throws IOException,
ClassNotFoundException, CloneNotSupportedException {
(new Object3()).clone();
}
static class Object1 implements Cloneable, Data, FileFilter {
public void doSmth() {
System.out.println("Bar!");
}
@Override
protected Object clone() throws CloneNotSupportedException {
Object clone = super.clone();
((Object1) clone).doSmth(); // ! a warning here
accept(new File("1.txt")); // ! a warning here
this.accept(new File("1.txt")); // ! a warning here
Object1.this.accept(new File("1.txt")); // ! a warning here
accept2(new File("1.txt")); // no warnings here
return clone;
}
public boolean accept(File pathname) {
return false;
}
final boolean accept2(File pathname) {
return false;
}
}
static class Object2 extends Object1 implements Data {
@Override
public void doSmth() {
System.out.println("Bar!");
}
}
static class Object3 extends Object2 { // implements Serializable
private String value;
@Override
public void doSmth() {
System.out.println(value);
}
@Override
protected Object clone() throws CloneNotSupportedException {
Object clone = super.clone();
((Object2) clone).doSmth(); // ! a warning here
return clone;
}
}
static class Object4 {
public void doSmth() {
}
protected Object clone() throws CloneNotSupportedException {
Object clone = super.clone();
((Object2) clone).doSmth(); // ! no warning here
return clone;
}
}
}