有人可以尽可能详细地解释以下类型之间的差异吗?
List
List<Object>
List<?>
Run Code Online (Sandbox Code Playgroud)
让我更具体一点.我什么时候想用
// 1
public void CanYouGiveMeAnAnswer(List l) { }
// 2
public void CanYouGiveMeAnAnswer(List<Object> l) { }
// 3
public void CanYouGiveMeAnAnswer(List<?> l) { }
Run Code Online (Sandbox Code Playgroud) 请考虑以下代码段:
type alias Model =
{ x : Int }
testFunc : Model -> Html String
testFunc model =
div [] []
Run Code Online (Sandbox Code Playgroud)
我在这里很困惑.div是一个返回a的函数Html msg.但 testFunc回报Html String.
这是如何编译的?我错过了一些非常基本的理解吗?
我想使可以接受任何输入变量的函数,而不管类型(int,double,String或其他对象),然后可能确定有条件的类型变量和动作的类型.
我怎样才能做到这一点?
我有以下代码块:
public static void main(String[] args) {
Integer[] test = new Integer[100];
comparableTest(test);
genericsTest(test);
}
private static void comparableTest(Comparable[] c) {
}
private static <E extends Comparable<E>> void genericsTest(E[] e) { }
Run Code Online (Sandbox Code Playgroud)
我使用泛型到底要完成什么?这些都没有编译错误。我仍然可以使用 compareTo 方法。那么我得到的是什么E extends Comparable<E>而不是仅仅使用Comparable?
这个问题的上下文是我让排序算法使用E extends Comparable<E>而不是Comparable.