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

我已经开始阅读关于Project Valhalla的文章,有些东西我真的不明白,那就是Value Types
这就是我理解的:
1)是否有不能作为参考进行比较的对象?

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

Google AutoValuecode example中,它表示
if(o == this){return true;}//equals method implementation what is this? I am comparing references here right?

2)根据维基百科,高效的小“物体”没有继承性。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这样的值类型。

本文翻译自 https://stackoverflow.com/questions/29591897/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 java value-type project-valhalla


相关文章:

c# - 在值类型上定义的扩展方法不能用于创建委托 - 为什么不呢?

c# - JavaScriptSerializer和ValueTypes(结构)

java - 如何使用默认值初始化值类型?

java - 是否可以将null赋值或与值类型变量进行比较?

java - Java:保证非最终引用字段的正确方法永远不会被读为null?

java - 将两个模式合并为一个

java - 是项目bootspring v1还是v2

c++ - 何时添加移动构造函数和移动赋值运算符真的会有所作为?

java - 将方面添加到实现类的非接口