在此示例中,asString()
调用不会编译。 (此外:调用toString()
确实可以编译,但是我需要自定义。)鉴于实际上已为每个可能的T
提供了该方法,我如何调用泛型的asString或任何方法?
class Range<T>
{
private T min;
private T max;
Range(T min, T max)
{
this.min = min;
this.max = max;
}
String makeString()
{
return "The range is from " + min.asString() + " to " + max.asString();
}
}
最佳答案
您需要提供一个定义了asString
方法的接口,例如:
interface AsStringable {
String asString();
}
然后像这样定义您的课程:
class Range<T extends AsStringable>
{
private T min;
private T max;
Range(T min, T max)
{
this.min = min;
this.max = max;
}
String makeString()
{
return "The range is from " + min.asString() + " to " + max.asString();
}
}
关于java - 如何在Java中调用泛型类型的方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6731956/