创建像scala枚举这样的多个实例

时间:2015-08-04 20:54:47

标签: scala enums

问题是我需要做些什么来复制scala枚举的功能(对于我自己编写的其他类):

val MY_ENUM_1, MY_ENUM_2 = Value

这会创建2个Value个实例。我怎么能这样做:

object App extends App {
    class Foo {}

    val foo1, foo2 = Foo

}

1 个答案:

答案 0 :(得分:2)

您需要添加private void addcircleAroundMarker() { GoogleMap mapView; // circle settings int radiusM = RADIUS OF CIRCLE; double latitude = CENTER LATITUDE; double longitude = CENTER LONGITUDE; LatLng latLng = new LatLng(latitude,longitude); // draw circle // diameter int d = 500; Bitmap bm = Bitmap.createBitmap(d, d, Config.ARGB_8888); Canvas c = new Canvas(bm); Paint p = new Paint(); p.setColor(getResources().getColor(R.color.green)); c.drawCircle(d/2, d/2, d/2, p); BitmapDescriptor bmD = BitmapDescriptorFactory.fromBitmap(bm); mapView.addGroundOverlay(new GroundOverlayOptions(). image(bmD). position(latLng,radiusM*2,radiusM*2). transparency(0.4f)); } 关键字:

new
scala> class Foo
defined class Foo

scala> val foo1, foo2 = new Foo
foo1: Foo = Foo@470e2030
foo2: Foo = Foo@3fb4f649

有效,因为它实际上从val MY_ENUM_1, MY_ENUM_2 = Value 调用方法Value,即:

Enumeration

最终会调用

/** Creates a fresh value, part of this enumeration. */
protected final def Value: Value = Value(nextId)

反过来会返回protected final def Value(i: Int, name: String): Value = new Val(i, name) (并且还会增加Val)。

您可以在Enumeration的源代码中看到整个过程(从第128行开始,nextId类定义为第209行)。