gpt4 book ai didi

java - 泛型类中泛型类型的访问方法

转载 作者:行者123 更新时间:2023-11-29 05:15:53 25 4
gpt4 key购买 nike

在 Java 中,我构造了一个以 String 类型作为参数的泛型类。在类内部,我想访问 String 类型的方法。但是我得到一个错误无法解析符号——任何人都看到了这个问题:

public final class App
public static void main(String[] args) {
MyClass<String> myClass = new MyClass<String>("some string");
}
}

public class MyClass<T> {
public MyClass(T someString) {
String someSubString = someString.substring(2,3);
}
}

这是一个更新:我实际上是在使用 String 作为占位符——我真正想做的是:

public final class App
public static void main(String[] args) {
MyClass<SpecificType2> myClass = new MyClass<SpecificType2>();
}
}

public class GeneralType {
public methodOfSpecificType() {...}
}

public class SpecificType1 extends GeneralType {
@Override
public methodOfSpecificType() {...}
}

public class SpecificType2 extends GeneralType {
@Override
public methodOfSpecificType() {...}
}

public class MyClass<T> {
public MyClass(T specificType) {
specificType.methodOfSpecificType();
}
}

最佳答案

通过您的示例,编译器只知道 T 是一个 Objectsubstring(int,int) 不是属于 Object 类的方法,因此它不能保证 substring 会存在,因此失败编译。

如果你想在这里访问substring,那么泛型真的不适合这个解决方案。您应该只将 T 作为 String。只有在需要通用功能时才使用泛型。

额外阅读

关于java - 泛型类中泛型类型的访问方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26555883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com