【发布时间】:2021-12-31 17:09:46
【问题描述】:
假设,我有两个如下所示的类:
public class classA {
private Boolean is_started;
public classA(Boolean is_started) {
this.is_started = started;
}
public Boolean getIs_started(){
return this.is_started;
}
}
public class classB {
private String token;
public classA(String token) {
this.token = token;
}
public String get_token(){
return this.token;
}
}
我从另一个类中调用这两个类,如下所示:
public class CallingClass {
public void function1() {
ClassA stepA = new ClassA(<some boolean>);
commonFunction(stepA);
}
public void function2() {
ClassB stepB = new ClassB(<some string>);
commonFunction(stepB);
}
public <T> void commonFunction(Class<T> dataObject) {
//An if statement that has a condition that only calls a function in classB {
String token = dataObject.get_token();
}
//An if statement that has a condition that only calls a function in classA {
Boolean is_started = dataObject.getIS_started();
}
//It returns error : The method [get_token()/getIS_started()] is undefined for the type Class<T>
我想确保我可以调用不同的对象而无需在函数中指定它们。例如,我想提供ClassA 和ClassB 作为commonFunction 的参数,如上例所示。如何使用泛型实现它?
【问题讨论】:
-
试图更好地理解你的问题,所以在你的通用函数 commonFunction 中,你想调用一个在 classA 和 classB 中的方法 get_token 并返回结果是什么?
-
您的“classA”没有方法
get_token。Class<T>指的是java.lang.Class。你调用你的类classA,在一个 sn-p 中使用小写字母,在下一个使用大写字母ClassA。 A 类或 B 类都没有扩展/实现Class<T>。不太清楚您的要求或尝试实现的目标。 -
您需要某种方式将两个类联系在一起,例如
interface(因为Class没有定义getToken方法) -
我添加了一些声明以进行澄清。 @scigs
标签: java class object generics