我有一个方法有两个参数,例如
computHash(HashTable hs, String myName){
//compute hs data, it traverse the hashtable and create xml
return xmlString;
}
我有一个名为Record的课程,
Class Record
{
String Name;
String FName;
String Phone;
//and its setter and getter.
}
现在我想要的是,如果我传递Hash
<String, Record>
,那么我想根据记录类成员创建xml。如果我通过<String, String>
,那么我创建简单的xml。
我可以像"instance of"
关键字那样做,如果是,那么如何。
答案 0 :(得分:1)
泛型只在编译期间存在,没有查看条目就无法区分HashTable<String, Record>
和HashTable<String, String>
。
您必须获得一个条目,然后可以对其进行instanceof
。
答案 1 :(得分:1)
无法检测HashTable
本身的类型。编译后的代码中不存在此信息,称为Type Erasure
。您可以做的是检测HashTable
内的一个值的类型。不幸的是,这不适用于emtpy Hashtable
。
答案 2 :(得分:0)
你可以做这样的事情,如果这是你所问的:
import java.util.Hashtable;
public class Test {
public static void main(String[] args) {
Hashtable<Integer, String> table1 = new Hashtable<Integer, String>();
table1.put(0, "String");
Hashtable<Integer, Record> table2 = new Hashtable<Integer, Record>();
table2.put(0, new Record());
System.out.println("Table 1:");
someFunction(table1);
System.out.println("Table 2:");
someFunction(table2);
Hashtable<Integer, Integer> table3 = new Hashtable<>();
System.out.println("Table 3:");
someFunction(table3);
}
static void someFunction(Hashtable hash) {
if (hash != null && hash.size() > 0) {
Object o = hash.elements().nextElement();
if (o instanceof String) {
System.out.println("It's a String!");
} else if (o instanceof Record) {
System.out.println("It's a Record!");
}
} else {
System.out.println("It's an empty table and you can't find the type of non-existing elements");
}
}
}
class Record {
String Name;
String FName;
String Phone;
// and its setter and getter.
}
编辑:正如其他人指出的那样,Hashtable不能为空。然后你需要做一些像我刚刚在
中编辑的东西