所以我有以下的通用类:如何获取泛型类的对象类型?
public class Member<T> {
private T id;
private T complexityLevel;
//constructor
public Member(T id, T complexityLevel) {
this.id = id;
this.complexityLevel = complexityLevel;
}
public T getId() {
return id;
}
public T getComplexity() {
return complexityLevel;
}
public void setComplexity(T complexityLevel) {
this.complexityLevel = complexityLevel;
}
public void setId(T id) {
this.id = id;
}
public static void main(String[] args) {
Member<String> mString = new Member<String>("id1", "High");
System.out.printf("id before setting id: %s%n", mString.getId());
mString.setId("id2");
System.out.printf("id after setting id: %s%n", mString.getId());
System.out.printf("complexity before setting it: %s%n", mString.getComplexity());
mString.setComplexity("Low");
System.out.printf("complexity after setting it: %s%n", mString.getComplexity());
// now for an integer
Member<Integer> mInteger = new Member<Integer>(1, 100);
System.out.printf("id before setting id: %d%n", mInteger.getId());
mInteger.setId(2);
System.out.printf("id after setting id: %d%n", mInteger.getId());
// for Double
Member<Double> mDouble = new Member<Double>(100.0);
...
我试图获得Member
类的对象基本类型(String
,Integer
,Double
等)。到目前为止,我有这一点,但问题是它返回"Member"
:
System.out.println(mString.getClass().getName());
System.out.println(mInteger.getClass().getName());
System.out.println(mDouble.getClass().getName());
谢谢。我得到“java.lang.String”,“java.lang.Integer”和“java.lang.Double”。我可以用它来获取子字符串。基本上我需要确定我正在执行的测试用例的参数类型。 – nabsATX
@neal_fazio - 你问如何得到“字符串”,“整数”等?你可以使用'getSimpleName()'而不是'getName()'。 –
完美。我想我需要熟悉一些更多的Java API。 – nabsATX