gpt4 book ai didi

java - 变量类型(通用或非通用)更改属性行为

转载 作者:行者123 更新时间:2023-11-29 04:09:06 24 4
gpt4 key购买 nike

<分区>

最小复制:

public class Main {
public static class TestGeneric<T> {
Map<String, Integer> testMap = new HashMap<>();
}

public static class Test {
Map<String, Integer> testMap = new HashMap<>();
}

public static class Irrelevant {}

public static void main(String[] args) {
// Not generic, no problem.
Test t = new Test();
Map.Entry<String, Integer> entry = t.testMap.entrySet().iterator().next();

// Generic, but variable type also include generic information.
TestGeneric<Irrelevant> t2 = new TestGeneric<>();
Map.Entry<String, Integer> entry2 = t2.testMap.entrySet().iterator().next();

// Generic, but variable type doesnt keep this info.
TestGeneric t3 = new TestGeneric<Irrelevant>();
Map.Entry<String, Integer> entry3 = t3.testMap.entrySet().iterator().next();
}
}

最后一行没有编译因为Object cannot be converted to Entry<String, Integer> .

唯一的区别似乎是“根”变量的类型。 t3类型是 TestGeneric同时 t2TestGeneric<Irrelevant> .我不明白变量的类型如何改变类型不变的类属性的返回类型。在所有情况下,testMap仍然是 Map<String, Integer>但它的 entrySet()更改返回类型。

我可能对 Java Generic 有一些误解,但是什么?

谢谢,

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