泛型方法 是在调用方法的时候指明泛型的具体类型.
语句:
修饰符 <T,E,…> 返回值类型 方法名(形参列表){
。。。。。。
}
- 修饰符与返回值类型中间的 泛型标识符 <T,E,…>,是 泛型方法的标志,只有这种格式声明的方法才是泛型方法。
- 泛型方法声明时的 泛型标识符 <T,E,…> 表示在方法可以使用声明的泛型类型。
- 与泛型类相同,泛型标识符可以是任意类型,常见的如T,E,K,V 等。
- 泛型方法可以声明为 static 的,并且与普通的静态方法是一样的。
普通泛型方法
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class GenericMethod {
public <T> String commonMethod(String name,T t){ String res = ""; res += name +"-"+ t; System.out.println("普通泛型方法 : "+res); return res; } }
JAVA
|
调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class GenericMethodApplication { public static void main(String[] args) { GenericMethod genericMethod = new GenericMethod(); String commonRes01 = genericMethod.commonMethod("001", "bb"); System.out.println(commonRes01); String commonRes02 = genericMethod.commonMethod("002", 100); System.out.println(commonRes02); String commonRes03 = genericMethod.commonMethod("003", true); System.out.println(commonRes03); System.out.println("=================="); } }
JAVA
|
静态泛型方法
1 2 3 4 5 6 7 8 9 10 11 12
| public class GenericMethod {
public static <T,E> String staticMethod(String name,T t,E e){ String res = ""; res += name +"-"+ t +"-"+ e; System.out.println("静态泛型方法 : "+res); return res; } }
JAVA
|
调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class GenericMethodApplication { public static void main(String[] args) { String staticRes01 = GenericMethod.staticMethod("001", "aa", "bb"); System.out.println(staticRes01); String staticRes02 = GenericMethod.staticMethod("002", 100, 'c'); System.out.println(staticRes02); String staticRes03 = GenericMethod.staticMethod("003", 12.05d, false); System.out.println(staticRes03); System.out.println("=================="); } }
JAVA
|
泛型方法中的可变参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public class GenericMethod {
public <A> void argsMethod(A ... args){ for (A arg : args) { System.out.println(arg); } } }
调用 package com.northcastle.genericmethod;
public class GenericMethodApplication { public static void main(String[] args) { genericMethod.argsMethod(1,2,300,400,500,600); System.out.println("=================="); } }
JAVA
|
注解是一种能被添加到java代码中的元数据,类、方法、变量、参数和包都可以用注解来修饰。注解对于它所修饰的代码并没有直接的影响
- 框架中的注解
@RestController
@RestController 是@controller和@ResponseBody 的结合
@Controller 将当前修饰的类注入SpringBoot IOC容器,使得从该类所在的项目跑起来的过程中,这个类就被实例化。
@ResponseBody 它的作用简短截说就是指该类中所有的API接口返回的数据,甭管你对应的方法返回Map或是其他Object,它会以Json字符串的形式返回给客户端
@Requestmapper
- 自定义注解、解析
定义注解类型元素时需要注意如下几点:
1 2 3 4 5 6 7 8
| 访问修饰符必须为public,不写默认为public; 该元素的类型只能是基本数据类型、String、Class、枚举类型、注解类型(体现了注解的嵌套效果)以及上述类型的一位数组; 该元素的名称一般定义为名词,如果注解中只有一个元素,请把名字起为value(后面使用会带来便利操作); ()不是定义方法参数的地方,也不能在括号中定义任何参数,仅仅只是一个特殊的语法; default代表默认值,值必须和第2点定义的类型一致; 如果没有默认值,代表后续使用注解时必须给该类型元素赋值。
TEXT
|
@Target
@Target注解,是专门用来限定某个自定义注解能够被应用在哪些Java元素上面的
@Retention
@Retention注解,翻译为持久力、保持力。即用来修饰自定义注解的生命力。
注解的生命周期有三个阶段:1、Java源文件阶段;2、编译到class文件阶段;3、运行期阶段。
@Documented
用来指定自定义注解是否能随着被定义的java文件生成到JavaDoc文档当中
@Inherited
指定某个自定义注解如果写在了父类的声明部分,那么子类的声明部分也能自动拥有该注解。@Inherited注解只对那些@Target被定义为ElementType.TYPE的自定义注解起作用。
- 项目中的自定义注解的使用
前端
后端
数据库
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制
- 任何数据类型(包括基本数据类型)都有一个“静态”的class属性
- Object(对象) ——> getClass();
- 通过Class类的静态方法:forName(String className)(常用)