1*f1fbf3c2SXin Li package test4; 2*f1fbf3c2SXin Li 3*f1fbf3c2SXin Li import java.util.ArrayList; 4*f1fbf3c2SXin Li 5*f1fbf3c2SXin Li public class JIRA181<T extends Number> extends ArrayList<T> { 6*f1fbf3c2SXin Li /** default serialVersionUID */ 7*f1fbf3c2SXin Li private static final long serialVersionUID = 1L; 8*f1fbf3c2SXin Li 9*f1fbf3c2SXin Li public @interface Condition { condition()10*f1fbf3c2SXin Li Class<? extends ICondition> condition(); 11*f1fbf3c2SXin Li } 12*f1fbf3c2SXin Li 13*f1fbf3c2SXin Li public @interface Condition2 { condition()14*f1fbf3c2SXin Li Class<?> condition(); 15*f1fbf3c2SXin Li } 16*f1fbf3c2SXin Li 17*f1fbf3c2SXin Li @Condition(condition = B.class) 18*f1fbf3c2SXin Li public Object aField; 19*f1fbf3c2SXin Li 20*f1fbf3c2SXin Li @Condition2(condition = B[].class) 21*f1fbf3c2SXin Li public Object aField2; 22*f1fbf3c2SXin Li 23*f1fbf3c2SXin Li public interface ICondition { match(Object src)24*f1fbf3c2SXin Li boolean match(Object src); 25*f1fbf3c2SXin Li } 26*f1fbf3c2SXin Li 27*f1fbf3c2SXin Li private class B implements ICondition { match(Object src)28*f1fbf3c2SXin Li public boolean match(Object src) { 29*f1fbf3c2SXin Li return JIRA181.this.size() > 0; 30*f1fbf3c2SXin Li } 31*f1fbf3c2SXin Li } 32*f1fbf3c2SXin Li } 33