gpt4 book ai didi

java - 为什么在某些情况下不需要对象实例化?

转载 作者:行者123 更新时间:2023-12-02 03:02:41 25 4
gpt4 key购买 nike

为什么有时我们不必创建对象,只需将其分配给方法等即可?以下面为例。

List<String> list1 = new ArrayList<>();
List<String> list2 = Collections.synchronizedList(list1);

这是否意味着 list2 被分配了一个 ArrayList 对象?在这种情况下,内存分配会发生什么情况?谢谢!

最佳答案

List2 被分配了列表的某些实现。在确切的情况下,它是 SynchronizedRandomAccessList 对象或 SynchronizedList 对象,但不是 ArrayList

Here是源代码:

public static <T> List<T> synchronizedList(List<T> list) {
return (list instanceof RandomAccess ?
new SynchronizedRandomAccessList<>(list) :
new SynchronizedList<>(list));
}

静态方法synchronizedList()在这种情况下只是一个帮助器。 java 中的对象(不是原始值)负责传递对内存位置的引用。因此,synchronizedList() 返回对 new SynchronizedList() 对象的内存引用,通过调用它,您可以将该内存位置分配给 list2 对象。

关于java - 为什么在某些情况下不需要对象实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42225038/

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