gpt4 book ai didi

java - getClass()方法的返回类型描述中的 "static type of expression"是什么意思?

转载 作者:行者123 更新时间:2023-12-01 19:54:22 25 4
gpt4 key购买 nike

getClass() Object的方法类返回 Class <? extends |T|>哪里|T|是删除 getClass() 的表达式的静态类型方法被调用

我不明白“表达式的静态类型”的含义。这是否意味着静态上下文?也许我需要一些例子才能更好地理解。

最佳答案

这是一个例子:

String str = "a string";
Class<? extends String> c = str.getClass();

getClass() 的表达式调用的方法是strstr的静态类型是 String 。所以在这种情况下,该方法返回 Class<? extends String> ,其中String是删除 str 的静态类型。在这种情况下,删除部分并不重要,因为 String不是泛型类。

这是另一个例子:

ArrayList<String> strList = new ArrayList<String>();
Class<? extends ArrayList> c2 = strList.getClass();

在本例中,表达式为 strListstrList的静态类型是 ArrayList<String> ,该类型的删除ArrayList 。这就是删除部分很重要的地方,因为它告诉您静态类型的任何类型参数在运行时将不可用。这是由于type erasure

由于类型删除,以下内容无效:

ArrayList<String> strList = new ArrayList<String>();
Class<? extends ArrayList<String>> c2 = strList.getClass(); //error: incompatible types

关于java - getClass()方法的返回类型描述中的 "static type of expression"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7439120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com