2017-06-16 5 views
0

2つのコンストラクタで作成したクラスがあります。複数のコンストラクタを持つ型からインスタンスを作成します。

デフォルトのコンストラクタのみを使用して、このクラスのインスタンスを作成します。ここ

class A (arg1:Int,Arg2:String){ 
    def this(arg1:Int){ 
     this(arg1,"hello") 
    } 
} 

は私がしようとするものである:

val tpe = ru.typeOf[A] 
val mirror = ru.runtimeMirror(getClass.getClassLoader) 
val clsSym = tpe.typeSymbol.asClass 
val clsMirror = mirror.reflectClass(clsSym) 
val ctorSym = tpe.decl(ru.termNames.CONSTRUCTOR).asMethod 
val method = clsMirror.reflectConstructor(ctorSym) 
val newInstance = method(args:_*) 

私は次のエラーを取得しています:

constructor ExampleWithCamelCase encapsulates multiple overloaded 
alternatives and cannot be treated as a method. Consider invoking 
<offending symbol>.asTerm.alternatives` and manually picking the required method 

は、デフォルトコンストラクタを選択することが離れているのですか?あなたは、単に複数のコンストラクタを開始するのにnewInstanceのJavaリフレクションを使用することができます

答えて

1
classOf[A].getConstructors()(1).newInstance(1) 

関連する問題