Project Valhalla
● Value Types
– ユーザー定義基本型
● Specialization
– 基本型が指定可能なGenerics
● Class Dynamic
– クラスの動的リンク
ValueTypesとSpecialization
● ValueTypes
– VM優先
– enhancements to the Java Virtual Machine
instruction set, and secondarily to the Java
Language
http://cr.openjdk.java.net/~jrose/values/values-0.html
● Specialization
– 言語優先
– enhancements to the Java Language (and
secondarily, to the Java Virtual Machine)
http://cr.openjdk.java.net/~briangoetz/valhalla/specialization.html
ValueTypes
● Codes like a class, works like an int!
● ローカルキーワードが導入される?
– valueをキーワードにできない
– classの前にだけ使えるキーワード
value class Point{
final int x;
final int y;
}
ValueTypesの利用
static Point origin = __MakeValue(0, 0);
static String stringValueOf(Point p) {
return "Point("+p.x+","+p.y+")";
}
static Point displace(Point p, int dx, int
dy) {
if (dx == 0 && dy == 0)
return p;
Point p2 = __MakeValue(p.x + dx, p.y +
dy);
assert(!p.equals(p2));
return p2;
}
● __MakeValueはなんらかのおしゃれな表記にな
るはず