【发布时间】:2020-07-09 07:23:30
【问题描述】:
我有一个通用类,它有一个方法 getOutput。我想根据 T 的类型(类类型)做出决定。我尝试了以下方法,但它不起作用。
class Test<T> implements Interface1<T> {
public T getOutput(String input) {
if (T instanceof Class1) {
//do something
} else {
//do something else
}
}
}
【问题讨论】:
-
T是您班级中的 something 类型,不是吗?这是您应该检查的内容,而不是T本身。 -
T 可以是字符串或整数。如果 T 是一个字符串,我将执行 action-1。如果 T 是 Integer,我将执行 action-2。
-
而
getOutput本身返回T类型的东西。你要返回什么? -
如果 T 是一个字符串,我会返回一个字符串对象。如果 T 是 Integer,我将返回一个 Integer 对象。
-
如果您想知道它是什么,您必须将
Class<T>作为构造函数(或方法)参数传递。也就是说,这通常不是正确的做法,因为面向对象编程的全部意义在于你应该能够调用input.getWhatever(要么,要么你真的在寻找策略设计模式)。
标签: java oop generics design-patterns strategy-pattern