package reflection.targets;
import java.lang.reflect.Method;
import reflection.AnnoT;
import reflection.AnnoT2;
import reflection.AnnoT3;
@AnnoT2
public class ClassTarget003 {
@AnnoT2
int myField = 10;
@AnnoT
public ClassTarget003() {
}
@AnnoT3("can'tchange")
public ClassTarget003(int f) {
myField = f;
System.out.println("modified!");
}
public int methodStays() {
return 99;
}
public int methodChanged() {
return 3; //Changed from v002
}
public int lateMethod() {
return 42;
}
public String doubleIt(String it) {
return it + it;
}
public String changeIt(String it) {
return it + " " + it + "!";
}
public int changeReturn(String it) {
return it.length();
}
public String changeThem(String it, int repeat) {
String result = "";
for (int i = 0; i < repeat; i++) {
result += it;
}
return result;
}
public String callPrivateMethod() throws Exception {
Method privateOne = ClassTarget.class.getDeclaredMethod("privateMethod");
return (String) privateOne.invoke(this);
}
@SuppressWarnings("unused")
private String privateMethod() {
return "new privateMethod result";
}
protected String protectedMethod() {
return "new protectedMethod result";
}
String defaultMethod() {
return "new defaultMethod result";
}
public static int staticMethodAdded() {
return 3;
}
public static String staticMethodAddedWithArgs(int i, String s) {
return i + s + "003";
}
@Override
public String toString() {
return "ClassTarget003.toString";
}
}