java - 在 Java 中,如何在方法参数中正确使用抽象类?

标签 java class inheritance abstract extends

我有一个看起来像这样的抽象类:

public abstract class Mapper<T>{
    public T getResult(String json){
        ...
    }
}

T 是 json 字符串映射到的对象类。

我有几个扩展这个抽象类的映射类;都具有不同的 T 值。我想要的是能够将父 Mapper 类插入到所有子类都可以使用的方法中;所以我不必为每个子类编写单独的方法。我预期的方法如下所示:

public handleResult(String 1, String 2, boolean 3, Mapper<T> map){
    ....
}

这给我带来了无法解析 T 的问题,我已经这样尝试过:

public handleResult(String 1, String 2, boolean 3, Mapper map){
    ....
}

然而,这会导致空指针问题,因为它无法解析 T 应该进一步进入代码的内容。

谁能指导我如何在方法中使用这个抽象类?

最佳答案

你的方法应该是这样的

public <T> T handleResult(String p1, String p2, boolean p3, Mapper<T> map){
    ...
}

或者如果它不应该返回任何东西:

public <T> void handleResult(String p1, String p2, boolean p3, Mapper<T> map){
    ...
}

关于java - 在 Java 中,如何在方法参数中正确使用抽象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35324004/

相关文章:

java - 如果要注入(inject)的实例具有最终类,如何使用 InjectMocks

Java初学者求助,无法解析变量

python - Python 继承的问题

java - IntelliJ 调试问题

python - 在python中,有没有办法使用类和继承将两个(或更多)按钮输出到屏幕上?

java - 如何从Java类的外部将对象添加到类中的对象数组中

python - python类可以与父类共享变量吗

c++ - 通过模板特化继承

c++ - 自动创建 C++ 构造函数?

java - StartActivityForResult 不暂停主 Activity