![个人头像照片](https://ucc.alicdn.com/avatar/imkinhzvbpatm_5281bcc24c5e43d4b601e16cf1c82c93.jpg)
暂无个人介绍
本文介绍了如何在Java中使用自定义注解。首先,通过示例展示了创建`User`类、`UserDAO`、`UserService`和`Controller`的基本流程。接着,定义了一个名为`CustomAnnotation`的自定义注解,用于方法上,并解释了`@Documented`、`@Retention`和`@Target`的作用。然后,通过AOP(面向切面编程)在Controller中使用自定义注解,展示了如何在方法执行前进行拦截处理。最后,提到了自定义注解可以用于登录检查的场景,通过定义`@Login`注解和过滤器来实现。总之,本文以一个简单的例子阐述了Java中自定义注解的创建和应用。
Java中的泛型是伪泛型,编译时泛型信息会被擦除,例如ListString和ListInteger在JVM中都变为List。泛型擦除后,类型检查主要在编译时完成,针对的是引用而非实际对象。例如,ArrayListString的原始类型是ArrayList,但编译时会对引用调用的方法进行类型检查。类型转换由编译器自动处理,如PairDate的value在访问时会自动转换为`Date`。泛型不能用于基本类型,如ArrayListdouble应写作ArrayListDouble。静态方法和静态类不能使用泛型类的类型参数,但可以定义泛型静态方法。
该内容是关于Java ArrayList的添加元素和扩容机制的代码分析。首先,`add()`方法调用`ensureCapacityInternal(size + 1)`以确保容量足够。接着,`ensureCapacityInternal()`方法计算最小容量,首次添加时使容量至少为10。然后,`ensureExplicitCapacity()`判断是否需要扩容,只有当所需容量大于当前容量时才会调用`grow()`方法。`grow()`方法按旧容量的1.5倍进行扩容。整个过程保证了ArrayList在添加元素时能适应容量需求。