2010-02-19 8 views
6

Tengo un objeto y que necesita para pasar su clase con una anotación que lleva java.lang.Class, por ejemplo:Cómo conseguir una java.lang.Class de un objeto Scala para un argumento de anotación

public @interface PrepareForTest { 
    Class<?>[] value() 
} 

object MyObject 

@PrepareForTest(Array(?????)) 
class MySpec ... 

Lo he intentado:

@PrepareForTest(Array(classOf[MyObject])) 
// error: not found: type MyObject 

@PrepareForTest(Array(MyObject)) 
// error: type mismatch 
// found: MyObject.type (with underlying type object MyObject 
// required: java.lang.Class[_] 

@PrepareForTest(Array(classOf[MyObject.type])) 
// error: class type required by MyObject.type found 

No estoy seguro de qué más probar.

Respuesta

1

Tener un vistazo a la throws anotación:

@throws(classOf[IOException]) 

La anotación misma se declara como:

class throws(clazz: Class[_]) extends StaticAnnotation 

Hacer lo mismo para un object no parece ser posible porque Scala parece prevenir un objeto de ser visto como tener una clase en sí mismo

Cuestiones relacionadas