public static void main(String[] args) throws Exception {
String[] arr = new String[]{"1", "2", "3"};
changeAddr(arr, 0, 2);
System.out.println(Arrays.toString(arr));
Person person = new Person();
//T 作为对象传入,返回一个T类型对象
String[] arr1 = new String[]{"hhh", "20"};
//这里可以看到,Person并不需要进行强转,因为返回值类型在传入T的时候在返回值之前的<T>进行了定义,将其定义为了Person
person = handleData(person, arr1);
System.out.println(person.toString());
} /**
* 简单的demo,示例交换数组索引位置的值
*
* @param arr 传入的数组
* @param begin 交换索引
* @param end 交换索引
* @param <T> 定义的一个类型
* <T>表示声明一个泛型类型T,在调用方法,传入参数的时候再确定T的类型,T可以是所有类型,但是确定了是传入的类型,
* 比如以下方法,传入的为 T[] ,就代表T是声明这个参数的类型使用
* 其实T可以使用任意的字符代替,但是一般使用 T 表示Type 类型的意思(声明一个类型 )
* T通常放在方法的返回值声明之前
* T不是一个类。但是因为在之前的<T>定义好了一个泛型T,则泛型类型T可以作为数据类型使用
*
* <> 方法中传入的T,其实就是声明的<T> </>
*/
static <T> void changeAddr(T[] arr, Integer begin, Integer end) {
T temp = arr[begin];
arr[begin] = arr[end];
arr[end] = temp;
} /**
* 示例使用泛型进行对象的传入与处理
* @param t 泛型类型
* @param names 参数值
* @param <T> 定义的传入与返回的持有对象的类型
* @return 传入的类型
* @throws Exception
*/
static <T> T handleData(T t, String[] names) throws Exception {
Class c = t.getClass();
Field[] fields = c.getDeclaredFields();
Method[] methods = c.getDeclaredMethods();
for (Field field : fields) {
//暴力访问
field.setAccessible(true);
for (String s : names) {
field.set(t, s);
}
}
return t;
}

注意:使用泛型之前一定要对泛型进行声明,在返回值之前的<T>就是对泛型类型的声明

语法:

public <泛型声明> T methodName(args...);

JAVA 泛型方法<T>的更多相关文章

  1. 获取Spring容器中Bean实例的工具类(Java泛型方法实现)

    在使用Spring做IoC容器的时候,有的类不方便直接注入bean,需要手动获得一个类型的bean. 因此,实现一个获得bean实例的工具类,就很有必要. 以前,写了一个根据bean的名称和类型获取b ...

  2. Java 泛型方法、泛型类、通配符、通配符上下限

    泛型方法 泛型方法定义规则: 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前. 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开.一个泛型 ...

  3. Java泛型方法与泛型类的使用------------(五)

    泛型的本质就是将数据类型也参数化, 普通方法的输入参数的值是可以变的,但是类型(比如: String)是不能变的,它使得了在面对不同类型的输入参数的时候我们要重载方法才行. 泛型就是将这个数据类型也搞 ...

  4. 【转】Java泛型方法

    1. 定义泛型方法 (1) 如果你定义了一个泛型(类.接口),那么Java规定,你不能在所有的静态方法.静态初块等所有静态内容中使用泛型的类型参数.例如: public class A<T> ...

  5. java泛型方法

    Tool.java package cn.stat.p9.fanxing.demo; public class Tool<QQ> {//不确定类型时可以用泛型 private QQ q; ...

  6. JAVA 泛型方法 和 静态方法泛型

    /* //  泛型方法和静态方法泛型 泛型类定义的泛型 在整个类中有效 如果被方法使用 那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定 为了让不同方法可以操作不同类型  而且类型还 ...

  7. Java泛型方法与数据查询

    在使用JDBC查询数据库中数据时,返回的结果是ResultSet对象,使用十分不方便.Commons DbUtils组件提供了将ResultSet转化为Bean列表的方法,但是该方法在使用时需要根据不 ...

  8. JAVA泛型方法与类型限定

     泛型方法可以定义在普通类中,也可以定义在泛型类中 class ArrayAlg{ public static <T> T getMiddle(T...a){ return a[a.len ...

  9. Java泛型方法和构造函数

    可以在方法声明中定义类型参数,它们在方法的返回类型之前的尖括号中指定.包含泛型方法声明的类型不必是通用类型.可以在非静态方法声明中使用为泛型类型指定的类型参数. 示例 以下代码显示如何为方法m1()定 ...

  10. Java泛型方法定义及泛型类型推断

    泛型的推断 @Test public void test3(){ //类型推断时使用两个类型的最小公倍数 int x1 = add(3,4); Number x2 = add(3.5,4); Obje ...

随机推荐

  1. laravel 接入蚂蚁金服SDK(以支付宝APP支付为例)开发步骤

    一.创建应用及配置 首先需要到蚂蚁金服开放平台(https://docs.open.alipay.com)注册应用,获取应用id(APP_ID),并且配置应用,主要是签约应用,这个需要审核,一般2-5 ...

  2. Oracle彻底杀掉进程

    kill session 是DBA经常碰到的事情之一.如果kill 掉了不该kill 的session,则具有破坏性,因此尽可能的避免这样的错误发生.同时也应当注意,如果kill 的session属于 ...

  3. PS软件怎么把视频转成gif动态图?

    PS软件怎么把视频转成gif动态图?Adobe PhotoShop软件的最新版本是可以编辑视频的,并且可以将视频转换为GIF动态图,使用也很简单,下面分享ps制作gif动态图的教程,需要的朋友可以参考 ...

  4. 推荐一个Chrome扩展应用,能够自动去除CSDN广告

    作为一个程序员,每天编程遇到问题时,少不了前往国内著名的CSDN网站上查信息,看是否有同行遇到类似问题.很多时候根据遇到问题的错误消息进行搜索,结果都是一篇篇CSDN博客.这些博客打开后都会显示很多广 ...

  5. 搭建packagist私服和composer

    1.下载源码 https://github.com/composer/packagist 2.修改配置文件 cp app/config/parameters.yml.dist  app/config/ ...

  6. google Cayley图谱数据库初试

    一.安装 mkdir cayley cd cayley mkdir src export GOPATH=$(pwd) go get github.com/google/cayley go build ...

  7. LA 4256 商人

    题目链接:https://vjudge.net/contest/160916#problem/B 题意:给一个无向图,和一个序列:要求,在这个序列中,两两相连的两个数相同,或者,在无向图中相邻:(n& ...

  8. ACM-ICPC 2017 Asia HongKong 解题报告

    ACM-ICPC 2017 Asia HongKong 解题报告 任意门:https://nanti.jisuanke.com/?kw=ACM-ICPC%202017%20Asia%20HongKon ...

  9. HashMap对HashCode碰撞的处理

    先说Java之外的,什么是拉链法?怎么解决冲突的: 拉链法解决冲突的做法是:将所有关键字为同义词的结点链接在同一个单链表中. 若选定的散列表长度为m,则可将散列表定义为一个由m个头指针组成的指针数组t ...

  10. org.slf4j.impl.Log4jLoggerAdapter cannot be cast to ch.qos.logback.classic.Logger

    https://stackoverflow.com/questions/31433246/classcastexception-org-slf4j-impl-log4jloggeradapter-ca ...