2016-02-10 3 views
1

У меня есть абстрактный класс выглядит так:В Java, как правильно использовать абстрактные классы в параметрах метода?

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, как предполагается, будет дальше в код.

Может ли кто-нибудь указать мне, как я могу использовать этот абстрактный класс в методе?

+0

Делая объявляя класс или метод общего, вы можете определить 'тип T' параметр, после чего вы можете использовать его –

+0

Почему у вашего метода нет типа возврата? – SomeDude

ответ

3

Ваш метод должен выглядеть следующим образом

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){ 
    ... 
} 
Смежные вопросы