方法声明中Generic类型和Object有什么区别?

Vis*_*kia 8 java generics method-signature

我很困惑我Signature应该为同样的目的使用哪种方法?两者都适合我.

1.

public <T, J> T findUniqueByCondition(String tableName, 
                                      String key, 
                                      J value, 
                                      Class<T> targetObject);
Run Code Online (Sandbox Code Playgroud)

2.

public <T> T findUniqueByCondition(String tableName, 
                                   String key, 
                                   Object value, 
                                   Class<T> targetObject);
Run Code Online (Sandbox Code Playgroud)

从上面使用哪种方法最佳?我真的很困惑,找不到任何人的优势或劣势?有没有?如果是,请解释.

Tim*_*m B 12

就像那样没有区别,对于T你使用两次类型所以你有理由使用它但是对于J它只使用一次.

如果它真的可以是任何对象而你再也不使用那种类型那么就没有理由使用泛型.泛型允许您获取方法的返回类型和参数,并将它们中的两个或多个链接在一起.它们还允许您在类定义中使用泛型时将多个方法链接在一起.

这些用例都不适用于此.

  • 总而言之,不同之处在于,当编译器捕获实际类型时,您是否可以利用类型推断.+1. (4认同)