对象的强制类型转换,是知道对象的具体类型,然后强行转换为具体类型的对象。
那我们用反射得到对象的具体类型后,能不能用这个类型进行强制类型转换呢?
这样,我们的方法就可以返回具体类型,而不用返回Object了,这不更好吗?
代码:- import java.lang.reflect.Method;
- import java.lang.reflect.ParameterizedType;
- import java.lang.reflect.Type;
- import java.util.*;
- public class RefReturn {
- public static void main(String[] args) throws Exception {
- Collection<String> coll = new ArrayList<String>();
- System.out.println(getElementFromCollection(coll));
- }
- public static Object getElementFromCollection(Collection<String> collection) throws Exception{
-
- Method m = RefReturn.class.getMethod("getElementFromCollection", Collection.class);
- Type[] types = m.getGenericParameterTypes();
- ParameterizedType pt = (ParameterizedType)types[0];
- Type[] pts = pt.getActualTypeArguments();
- //标记1
- String s = pts[0].toString().substring(6);
- //标记2
- Object obj = Class.forName(s).newInstance();
-
- List l = Arrays.asList(pts);
-
- return obj.getClass().getName();
- }
- }
复制代码 在标记 1 处获得具体类型后,
在标记 2 处能否强制转换为pts[0]的类型,而不用Object
好像没说清楚。。。。 |