Valhalla项目的价值类型是什么?

我已经开始阅读有关Valhalla项目的信息,而我确实不了解某些内容,那就是Value

Types

这是我的理解:

1)是无法将其作为参考的对象吗?

final ValueType a = new ValueType();

final ValueType b = a;

System.out.println(a==b); returns false????

Google AutoValue

代码示例中,它指出

if(o == this){return true;}//equals method implementation what is this? I am comparing references here right?

2)根据Wikipedia, 高效的小型“对象”没有继承 。什么Small Objects?Without

inheritance意味着什么呢?

使用VT无法做到这一点吗?

public final class ValueType extends Any //is this not possible??

3)为什么要使用它们?将使用哪种方案以及如何使用。

4)根据Google AutoValue Library,简而言之,

值类型对象是没有身份的对象,即,如果两个值对象的内部状态相等,则认为这两个值对象相等。

我的问题是:它们是否具有状态,是否应该实施equalshashcode。什么是 没有身份的对象 是什么意思?

5)这个断言正确吗?

public static void main(final String[] args)

{

final Test clazz = new Test();

final AutoValue value = new AutoValue("Java Belongs to SUN");//Constructor Name

clazz.mutate(value);

System.out.println(value.getName()); //would print: Java Belongs to SUN??

}

private void mutate(final AutoValue value){value.setName("Java now is part of Oracle Corporation");return;}

如果是这样,JVM是否会获得不跟踪Objects or Values方法调用之间的内存的内存?

Project Valhalla Java 10初始项目的一部分将在2018年左右准备就绪。

回答:

您的最终主张是正确的。将ValueType变量作为参数传递给函数时,这些变量将完全复制,而不是通常仅获取对对象的引用的副本。这样,您就可以将小对象视为值类型(如int或boolean)。

以上是 Valhalla项目的价值类型是什么? 的全部内容, 来源链接: utcz.com/qa/409801.html

回到顶部