java - 瓦尔哈拉计划的值(value)类型是什么?

标签 java value-type project-valhalla

我已经开始阅读 Project Valhalla还有一些我真的不明白,它是 Value Types

这是我的理解:

1) 不能作为引用比较的对象吗?

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

Google 自动值 code example ,它说

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

2) 根据 Wikipedia,无需继承的高效小型“对象”Small Objects?Without继承是什么意思?

这不能使用 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 之类的值类型。

关于java - 瓦尔哈拉计划的值(value)类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29591897/

相关文章:

.net - CIL 评估堆栈可以包含值类型吗?

java - 可以将 null 分配给值类型变量或与值类型变量进行比较吗?

serialization - 如果应用程序从不依赖其对象标识,是否可以序列化基于值的对象?

java - 如何让Javamelody使用不同的端口(Spring Boot+暴露的两个HTTP端口)

java - Struts Validation.xml - requiredif 问题

java - 强制 spring boot jackson 解串器使用 BigDecimal

java - 数据库中不存在外部集合字段

swift - 在 Swift 中保存结构

c# - 将枚举设置为其默认值

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