泛型类型
泛型类、泛型方法、泛型接口
如何定义泛型
定义泛型方法
2023年10月8日14:27:41
无参数方法调用
a类
package sample.tt;
public class a {
public void doSth(){
System.out.println(123123123);
}
}
b类
package sample.tt;
import java.lang.reflect.InvocationTargetException;
/**
* @program: keDD1
* @description:
* @author: ff
* @create: 2023-10-08 14:03
**/
public class b {
public static <T> void sett(Class<T> tClass){
try {
Class<?> myClass = Class.forName("sample.tt.a");
Object myInstance = myClass.newInstance();
myClass.getMethod("doSth").invoke(myInstance,null);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
sett(Class.forName("sample.tt.a"));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
运行结果
123123123
Process finished with exit code 0
有参数方法调用
a类
public class a {
public void doSth(String a,String b){
System.out.println(a+"\n"+b);
}
}
b类
package sample.tt;
import java.lang.reflect.InvocationTargetException;
/**
* @program: keDD1
* @description:
* @author:
* @create: 2023-10-08 14:03
**/
public class b {
public static <T> void sett(Class<T> tClass){
try {
Class<?> myClass = Class.forName("sample.tt.a");
Object myInstance = myClass.newInstance();
myClass.getMethod("doSth",String.class,String.class).invoke(myInstance,new Object[]{"1111","333333"});
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
sett(Class.forName("sample.tt.a"));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
结果
1111
333333
Process finished with exit code 0
通配符
上限和下限
可变参数
其他
泛型擦除机制
泛型接口和泛型类区别