LoginSignup
19
15

More than 5 years have passed since last update.

ScalaでClass型インスタンスを取得する

Last updated at Posted at 2014-12-03

Java

なんらかの型のインスタンスに対してgetClassしてClass型インスタンスを取得する例。

java
Class<?> c = "j".getClass();

これはScalaでも同様に可能。

scala
val c = "j".getClass

一方、これはそのままではダメだった。

java
Class<?> c = String.class;
scala
val c = String.class // error: identifier expected but 'class' found.

Scala

上記に該当するものはこう書く。

val c = classOf[String]

ジェネリクス型の場合

getClassについてはこれは先ほどと同様問題ない。

def foo[T](x: T) = x.getClass

一方classOfはダメだった。コンパイルエラー。

def foo[T] = classOf[T] // error: class type required but T found

こう書く。

import scala.reflect.ClassTag
def foo[T](implicit tag: ClassTag[T]) = tag.runtimeClass
19
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
15