2016-05-22 4 views
-2

мне интересно, почему мой метод интерфейс возвращает тип объекта вместо firebase типа я объявил: Код нижеОбщий интерфейс оленья кожа вернуть правильный тип

Public Interface IDatabase<T> { 
public T getDatabaseRef(String reference) 



public Database implements IDatabase<Firebase>{ 
public Firebase getDatabaseRef(String reference){ 
..... 
return databaseRef; 

Как инициализировать Databse

IDatabase database = new Database(..) 

Когда я вызываю метод

Firebase reference = database.getDatabaseRef(); 

Я получаю несовместимые типы: Требуется: Firebase Найдено: java.lang.object

Я объявил firebase как общее значение при реализации базы данных. Должен ли он вернуть значение огневой базы?

+0

Вы уверены, что вы вызываете правильный метод? 'T getDatabaseRef (String reference)' и 'Firebase getDatabaseRef (ссылка на String)' установлены в 'private' и ожидают аргумент типа' String'. Вы вызываете 'database.getDatabaseRef();', что является другим методом. – Turing85

+0

Опубликовать действующий код Java. Это неверный код Java. –

+1

У вас должно быть предупреждение rawtypes от компилятора - это хороший урок, не игнорирующий предупреждения компилятора. –

ответ

5

Когда вы используете необработанные общие типы (т. Е. Без <SomeType>), они по умолчанию имеют верхнюю границу. В вашем случае это java.lang.Object.

Это было бы правильно:

IDatabase<Firebase> database = new Database(..); 
Смежные вопросы