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. Dynamics CRM 批量新建域用户

    好久没写了,今天大牛教了我偷懒的批量新建域用户的方法 是不是觉得  控制面板 =>管理工具=>用户和计算机=>Users=>新建用户,一个个建,很烦是不是,而且耗时,我上个项目 ...

  2. meat标签使用

    meta是html语言head区的一个辅助性标签.几乎所有的网页里,我们可以看到类似下面这段的html代码: <head> <meta http-equiv="conten ...

  3. Oracle SYS用户无法设置session级别的read only

    官方文档参考:SYSDBA is used internally in the Oracle database and has specialized functions. Its behavior ...

  4. datatable 动态显示/隐藏列

    这个例子演示了 column().visible()方法来隐藏显示列,通过点击列按钮动态切换 <table id="example" class="display& ...

  5. LG3690 【【模板】Link Cut Tree (动态树)】

    题目 终于去写\(LCT\)了 这个大爷讲的挺好的 板子 #include<algorithm> #include<iostream> #include<cstring& ...

  6. luogu4566 [Vani有约会]雨天的尾巴

    题目 线段树合并的板子题目了,写一写对线段树合并的理解 首先线段树合并就是把一大堆权值线段树合并起来的算法 尽管复杂度看起来并不是非常科学,但是确是非常优秀的\(O(nlogn)\) 主要的写法两种 ...

  7. luogu P3796【模板】AC自动机(加强版)

    嘟嘟嘟 这个和某谷的AC自动机模板简单版差不多. 但还是要注意几点的: 1.这个是统计出现次数,而不是是否出现,所以在查询的时候加上这个节点的val后,不能把val标记为-1.那么也就可以说查询的时间 ...

  8. Visual Studio 2010 RDLC 报表简单使用

    原文:Visual Studio 2010 RDLC 报表简单使用 RDLC(Report Definition Language Client-side Processing)是Visual Stu ...

  9. java安装以及jdk和jre安装(简单了解)

    轻松了解JDK是什么 什么是jdk? JDK是学好Java的第一步.不管是你要学习java编程,还是要搭建jsp web开发环境,或者是android开发环境都离不开它. jdk是什么呢?jdk的是j ...

  10. 【题解】洛谷 P1525 关押罪犯

    题目 https://www.luogu.org/problemnew/show/P1525 思路 把所有边sort一遍从大到小排列 运用并查集思想敌人的敌人就是朋友 从最大边开始查找连着的两个罪犯 ...