Was sind Wert-Typen von Projekt Valhalla?

Habe ich begann zu Lesen über Projekt Walhalla und es ist etwas, was ich wirklich nicht verstehen, und es ist die Value Types.

Dies ist, was ich verstehen:

1) Sind Objekte, können nicht vergleichen Sie es als Referenz?

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

In Google AutoValue code-Beispiel, heißt es

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

2) Laut Wikipedia hocheffiziente kleine 'Objekte' ohne Vererbung. Was tun Small Objects? und Without inheritance bedeuten?

Ist dieses nicht möglich, mit VT?

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

3) Warum werden Sie verwendet? Welches Szenario verwendet werden würde, und wie sollte es verwendet werden.

4) Nach Google AutoValue Library, in einer nussschale, einen Wert typisierte Objekt ist ein Objekt ohne Identität, d.h. zwei value-Objekte werden als gleich angesehen, wenn Ihre jeweiligen internen Zustand gleich ist. Meine Frage ist: haben Sie Zustand und sollte Sie implementieren equals und hashcode. Was bedeutet Objekt ohne Identität bedeuten?

5) Ist diese Aussage korrekt?

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;}

Wenn es so ist, würde JVM-gain-Speicher nicht durch die Verfolgung dieser Objects or Values zwischen Methoden-Aufrufe?

Project Valhalla ist Teil der ersten Projekt-Java-10 würde bereit sein, im Jahr 2018 oder so.

  • Sie haben eine Menge Forschung, und fragte eine gute Frage. Das heißt, ich bin mir nicht sicher, einschließlich der, die als ein Teil der Frage ist eine gute Idee, da eine person, die diese Frage beantworten können wahrscheinlich nicht benötigen 🙂
  • Klingt wie, was c# ruft ein 'struct'
  • Das macht 5 Fragen statt 1, und viele von Ihnen sind unklar, zumindest für mich. Ich vermute, jede Frage Sie haben kann beantwortet werden durch das Lesen cr.openjdk.java.net/~jrose/values/values-0.html. Es hat zum Beispiel einen ganzen Abschnitt gewidmet, um use-cases, was ist Ihre Dritte Frage.
  • Auch Google AutoValue Bibliothek hat nichts zu tun mit der bevorstehenden Werttypen in Java 10. Es ist nur ein code-Generierung von annotation-Prozessor, die Ihnen hilft, reduzieren die boilerplate gebraucht beim schreiben einen Wert der Klasse mit der aktuellen Java-version.
  • Ich denke, eine simple Antwort ist, zu sagen Wert-Typen sind unveränderlich Typen. Genau wie ein int hat keine setter, Sie würde nie mutieren einen Wert geben, erstellen Sie eine neue mit anderen Eigenschaften. Daher Identität (wie einen Zeiger/Referenz), ist nicht sinnvoll. Dies ist Häufig in die funktionale Programmierung. Sie gewinnen Einblick in die-durch das betrachten von Clojure, die standardmäßig nutzt Wert/unveränderliche Typen.
  • es ist genau wie ein C/C++/C# struct oder eine namedtuple in Python oder eine case-Klasse in Scala. Es gibt subtile vorgeschlagen, die performance-Vorteile. Schwer zu beurteilen, ohne einen Prototyp zu benchmark.

InformationsquelleAutor chiperortiz | 2015-04-12
Schreibe einen Kommentar