我知道这可能毫无意义,但这只是我的实验。有 3 种类型(据我所知)支持方法 substring()
。我不想制作这样的通用方法:
public static <T extends String & StringBuilder & StringBuffer> T substr3(T str) {
if (str.length() > 3) {
return (T) str.substring(0, 3);
}
return str;
}
它不会像这样编译,因为您可以根据需要使用任意多个接口(interface),但只能使用一个类作为有界类型。此方法适用于这 3 种类型:String
、StringBuilder
、StringBuffer
但问题是:如何将这 3 种类型设置为绑定(bind)类型?
最佳答案
为什么不简单地扩展 CharSequence
?
public static <T extends CharSequence> T substr3(T str) {
if (str.length() > 3) {
return (T) str.subSequence(0, 3);
}
return str;
}
注意
CharSequence
没有声明任何 substring
方法,但是 subSequence
应该提供相同的功能。
关于Java - 具有用于 3 种相似类型的有界类型的泛型方法 : String, StringBuilder、StringBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26425807/