java对于<T>与<?>的⽤法区分
⽤具体的例⼦来说明
public class CglibProxyFactoryT<T> {
/**
* 得到⽬标对象
*/
private Object target;
public CglibProxyFactory() {
}
/**
* 使⽤构造⽅法传递⽬标对象
* @param target
*/
public CglibProxyFactory(Object target) {
super();
this.target = target;
java中split的用法}
public Object invoke(String className, String methodName, Class<T> paramsType) throws ClassNotFoundException, IllegalAccessException, InstantiationExc Object o = Class.forName(className).newInstance();
Method method = o.getClass().getMethod(methodName, paramsType);
Object dog123 = method.invoke(o, "dog123");
return dog123;
}
}
public class CglibProxyFactory {
/**
* 得到⽬标对象
*/
private Object target;
public CglibProxyFactory() {
}
/**
* 使⽤构造⽅法传递⽬标对象
* @param target
*/
public CglibProxyFactory(Object target) {
super();
this.target = target;
}
public static Object invoke(String className, String methodName, Class<?> paramsType) throws ClassNotFoundException, IllegalAccessException, Instantiati Object o = Class.forName(className).newInstance();
Method method = o.getClass().getMethod(methodName, paramsType);
Object dog123 = method.invoke(o, "dog123");
return dog123;
}
}
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, Invocation String s = "com.String";
String[] split = s.split("\\.");
StringJoiner stringJoiner = new StringJoiner(".");
for (int i = 0; i < split.length-1; i++) {
stringJoiner.add(split[i]);
}
String className = String();
String methodName = split[split.length-1];
Object invoke = invoke(className, methodName, String.class);
System.out.println(invoke);
System.out.println("=======================上边是T的使⽤场景==下边是?的使⽤场景================================");
CglibProxyFactoryT<String> factory = new CglibProxyFactoryT<String>();
Object invoke1 = factory.invoke(className, methodName, String.class);
System.out.println(invoke1);
}
总结:从上边两个实例代码来看。T和?都表⽰了在编写时不确定的类型。
但是不同点在于。
T:如果⼀个类中的⽅法、参数使⽤了T来做泛型,那么类上边也必须要写T泛型。也就是说如果使⽤了T来做泛型,就必须在使⽤这个类的时刻,确定这个泛型的类型。
:如果想要使⽤?来做泛型。我们可以在写代码的时候,也不指定类型。也就是说,在使⽤类的时候不必确定这个泛型。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论