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
- 2014年2月14日 java的泛型 Type类
- Java获取时间的年、月、日
- 2010年3月14日Java
- 2014年3月14日 日记 java Matcher Pattern的学习 junit测试
- 2月14日
- 2月14日的街头
- 2014年12月13日,14日
- 总结一下2014年3月2日的36氪开放日参加体验
- 中国银行的网银2014年2月14日的说明不支持IE11
- 2014年05月14日
- 2014年05月14日
- 2014年07月14日
- 2014年2月10日 日记
- 2014年2月28日
- 2014年2月28日
- 2014年2月28日
- 2014年2月28日
- 2014年4月2日
- 电子邮件营销课堂之邮件阅读率提升技巧
- 一些J2EE WEB应用架构分析
- android发送邮件
- 如何把项目maven化
- SSH2中memcached作为hibernate二级缓存
- 2014年2月14日 java的泛型 Type类
- Message,MessageQueue,Looper,Handler详解+实例
- Ubuntu
- 参加广州传智播客.Net培训是我重要的选择之一
- 项目出现红色感叹号的解决方法
- TagSupport与BodyTagSupport的区别
- 浅谈协方差矩阵
- curl+exec实现异步无等待请求
- HDU_2222 大部分是别人的,有的地方稍有改动,代码有不完善的地方!