Я начал читать о Project 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) Согласно Википедии, высокоэффективные небольшие "объекты" без наследования. Что означают Small Objects?
и Without inheritance
?
Не возможно ли использовать VT?
public final class ValueType extends Any //is this not possible??
3) Почему они используются? Какой сценарий будет использоваться и как он будет использоваться.
4) Согласно Google AutoValue Library
, в двух словах, объект с типизированным значением является объектом без идентификатора, т.е. два объекта значения считаются равными, если их соответствующее внутреннее состояние равно. Мой вопрос: имеют ли они состояние и должны ли они реализовывать equals
и hashcode
. Что означает объект без идентификатора?
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 году или около того.