mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-14 02:10:40 +02:00
62 lines
2.0 KiB
Java
62 lines
2.0 KiB
Java
|
|
import org.aspectj.testing.Tester;
|
|
|
|
public class SuperInIntroduction {
|
|
public static void main (String[] args) {
|
|
int result = new Sub().getInt();
|
|
Tester.check(8==result, "new Sub().getInt() !8==" + result);
|
|
ObjectSub sb = new ObjectSub().getClone();
|
|
Tester.check(null != sb, "null new ObjectSub().getClone()");
|
|
sb = new ObjectSub().getSuperClone();
|
|
Tester.check(null != sb, "null new ObjectSub().getSuperClone()");
|
|
}
|
|
}
|
|
|
|
class Super {
|
|
protected int protectedInt = 1;
|
|
protected int protectedIntMethod() { return protectedInt; }
|
|
int defaultInt = 1;
|
|
int defaultIntMethod() { return defaultInt; }
|
|
}
|
|
|
|
class Sub extends Super { }
|
|
class ObjectSub { }
|
|
|
|
aspect A {
|
|
/** @testcase accessing protected method and field of class within code the compiler controls */
|
|
public int Sub.getInt() {
|
|
int result;
|
|
result = super.protectedInt;
|
|
result += super.protectedIntMethod();
|
|
result += protectedInt;
|
|
result += protectedIntMethod();
|
|
result += defaultInt;
|
|
result += defaultIntMethod();
|
|
result += super.defaultInt;
|
|
result += super.defaultIntMethod();
|
|
return result;
|
|
}
|
|
|
|
/** @testcase accessing protected method of class outside code the compiler controls */
|
|
public ObjectSub ObjectSub.getClone() {
|
|
try {
|
|
Object result = clone();
|
|
return (ObjectSub) result;
|
|
} catch (CloneNotSupportedException e) {
|
|
return this;
|
|
}
|
|
}
|
|
|
|
/** @testcase using super to access protected method of class outside code the compiler controls */
|
|
public ObjectSub ObjectSub.getSuperClone() {
|
|
ObjectSub result = null;
|
|
try {
|
|
result = (ObjectSub) super.clone();
|
|
Tester.check(false, "expecting CloneNotSupportedException");
|
|
} catch (CloneNotSupportedException e) {
|
|
result = this; // bad programming - ok for testing
|
|
}
|
|
return result;
|
|
}
|
|
}
|