通用接口不会返回正确的类型

时间:2016-05-22 13:30:44

标签: java generics firebase

我想知道为什么我的接口方法返回一个对象类型而不是我声明的firebase类型:下面的代码

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



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

如何初始化数据库

IDatabase database = new Database(..)

当我调用方法时

Firebase reference = database.getDatabaseRef();

我得到了不兼容的类型:必需:Firebase,Found:java.lang.object

我将firebase声明为IDatabase实现中的通用值。 它不应该返回一个firebase值吗?

1 个答案:

答案 0 :(得分:5)

当您使用原始泛型类型(即没有<SomeType>)时,它们默认为其上限。在您的情况下,这是java.lang.Object

这是正确的:

IDatabase<Firebase> database = new Database(..);