public static void passObjType(Object obj) {
Class clazz = obj.getClass();
ArrayList<clazz> arr = new ArrayList<clazz>();
}
public static void main(String[] args) {
HashSet<String> hs = new HashSet<String>();
passObjType(hs);
}
我希望,如果我输入一个HashSet对象,那么funktion PassObjType()将创建一个带有HashSet的Arraylist,如果我输入一个String对象,那么它将创建一个带有String的Arraylist。我怎样才能做到这一点?
答案 0 :(得分:2)
您可以尝试类似
的内容public static <T> void passObjType(T obj) {
ArrayList<T> arr = new ArrayList<T>();
//...
}
public static void main(String[] args) {
HashSet<String> hs = new HashSet<String>();
passObjType(hs);
}
但我不确定这是否是你想要的,因为在运行时泛型类型erased和ArrayList<String>
只是ArrayList
(可以存储任何对象)。
答案 1 :(得分:2)
您可以使用Java Generics获取Object类型的参数,如下所示:
public static<T> void passObjType(T e) {
ArrayList<T> arr = new ArrayList<T>();
}
public static void main(String[] args) {
HashSet<String> hs = new HashSet<String>();
String hp = new String();
passObjType(hs);
passObjType(hp);
}