2014年2月14日 java的泛型 Type类

来源:互联网 发布:红软算法 编辑:程序博客网 时间:2024/05/21 06:18

1. Class类的 getSuperClass()方法和getGenericSuperClass()方法以及getGenericInterfaces()方法的使用。如下。

public class ParameterizedTypeTest{    public static void main(String[] args) throws InstantiationException, IllegalAccessException    {        Son1 son = new Son1();        Class clazzSon = son.getClass();        Class clazzPar = son.getClass().getSuperclass();        //得到泛型类型信息        Type type = clazzSon.getGenericSuperclass();        Type[] typeInter = clazzSon.getGenericInterfaces();        //如果这个是泛型参数化的类,就像 Parent<T extends BaseDomain, E> 有类型参数        if (type instanceof ParameterizedType)        {            //得到所有泛型参数的类型            Type[] types = ((ParameterizedType) type).getActualTypeArguments();            for (Type t : types)            {                //转换成class                Class clazz = (Class) t;                System.out.println("class name  " + clazz.getSimpleName());                System.out.println(clazz.newInstance());            }        }        System.out.println("clazzSon " + clazzSon);        System.out.println("clazzPar " + clazzPar);        System.out.println("GenericSuperclass " + type);        System.out.println("typeInter " + typeInter[0]);    }}class Parent<T extends BaseDomain, E>{    public void sayHello()    {        System.out.println("parent say hello");    }}interface Draw<T extends BaseEntity>{    public void draw();}class Son1 extends Parent<UserDomain, String> implements Draw<User>{    /*     * (non-Javadoc)     * @see com.bdr.irts.test.Parent#sayHello()     */    @Override    public void sayHello()    {        // TODO Auto-generated method stub        super.sayHello();    }        /*     * (non-Javadoc)     * @see java.lang.Runnable#run()     */    public void run()    {        // TODO Auto-generated method stub            }        /*     * (non-Javadoc)     * @see com.bdr.irts.test.Draw#draw()     */    public void draw()    {        // TODO Auto-generated method stub        System.out.println("is drawing");    }}


 2  java 提供了标注注解,即没有元素的注解,java提供内置的三种标注注解 @Override @Declared @SuppressWarnings

 

3 元注解 ,定义注解的时候 需要一些元注解,注解注解类的注解,专职负责注解其他注解,有四种元注解  @Target  @Retention @Documented @Inherited

 

4  注解元素,注解元素可以用的类型如下,  任何的基本数据类型  Class  Boolean  Enum Annotation Sring  以上类型的数组等。

 

5  默认值的限制,注解在默认值上很挑剔,元素不能有不确定的值,也就是说,元素要么具有默认值,即是在元素后面加上default 要么在使用注解的时候提供元素的值

class Test{    @DefaultValueTest(intA = 1)    public int b;    // @DefaultValueTest    // public int b;    }@Target(value = ElementType.FIELD)@Retention(value = RetentionPolicy.RUNTIME)@interface DefaultValueTest    {        public int intA(); // 如果这里没有指定默认值,则在上面的使用的时候就需要为这个intA指定值        // public int intA() default -1; //这里指定了值,则上面就可以不指定值,可以为默认值    }

 

6 对于非基本类型的数值,无论使用的时候还是声明的时候,都不能使用null作为其值,我们只能使用特殊的值 如 负数或者空字符串来表示不存在,如下

//: annotations/SimulatingNull.javaimport java.lang.annotation.*;@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface SimulatingNull {  public int id() default -1;  public String description() default "";} ///:~


 7 Junit 中@Test注解,   元素expected ,期望的, 摆明这个测试方法会抛出一个异常,如果不抛出异常或者抛出一个别的异常,测试就会失败,否则成功。


 

0 0
原创粉丝点击