用于反射的Java库的classOf T而不是T $

橡皮鸭

我正在将Scala与Java库一起使用,该库期望通过a传递类,public static void main(java.lang.String[])以便它可以通过反射运行以进行集成测试。

object RestServer {
    def main(args: Array[String]): Unit = { /* run the server */ }
}

由于此问题的答案是另一个问题,因此将其编译为两个类。

public final class com.example.RestServer$ {
  public static final com.example.RestServer$ MODULE$;
  public static {};
  public void main(java.lang.String[]);
}

public final class com.example.RestServer {
  public static void main(java.lang.String[]);
}

当我把课程传给图书馆时

@IntegrationTest(main = classOf[RestServer.type])
class MyTests extends RapidoidIntegrationTest { }

我实际上是传递object单例实例(RestServer$),而不是RestServer具有该static void main()方法

这不是问题,只是库会验证它正在调用的方法是否同时存在public并且static在调用之前?

我该如何RestServer上课呢?

贾斯珀

如果您可以控制RestServer源文件,则可以添加一个空的伴随类。

object RestServer {
    def main(args: Array[String]): Unit = { /* run the server */ }
}

class RestServer

这样,Scala将识别出RestServer存在一个类,因此classOf[RestServer]将进行编译并为您提供包含静态方法的类。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java 中的泛型 - 为什么我不能做 Comparable<? 扩展 T> 而不是 Comparable<? 超级T>?

Java泛型何时需要<?扩展了T>而不是<T>,切换是否有不利之处?

数据结构(Weiss Java书):为什么在BinaryHeap <T>数组而不是T []中分配Comparable []?

如何遍历反射结构上的* T函数,而不是reflect.TypeOf(interface {})?

Java反射-在通用接口中获取T的实际类型<T>

在Java中使用System.nanoTime()时,为什么要使用t1-t0 <0,而不是t1 <t0

是否有用于Java反射的常规“后端”库

当对象实际引用数组时,为什么Java在方法声明中使用Object而不是T []

classOf [T]和Class [T]有什么区别

Scala T不是课程

错误:“ T”不是模板

Java反射:对象不是声明类的实例

框架/库可以使用MethodHandle(而不是传统的反射)吗?

扩展方法返回<T>而不是Result <T>

Func <T,TResult>不是Func <T,TResult>

Java List <T> T [] toArray(T [] a)实现

t.apply不是函数

'type'不是'T'的成员类型

为什么classOf [T]在我的对象中不起作用?

给定 Array.Cast<T>(),如何通过反射确定 T?

使用对象实例而不是类的 Java 注释反射

classOf []用于更高类型的类型

如何解释<T> T,<T,V> Query <T>,Class <T>之类的Java泛型?

使用Cell <T>而不是T会产生什么费用?

Android Ormlite获取SelectorIterator <T,ID>而不是CloseableIterator <T>

golang使struct T实现I但不是* T

一組 Rc<T>,其中 T 不是 Hash 或 Ord?

为什么要使用Expression <Func <T >>而不是Func <T>?

为什么<T扩展Comparable>而不是<T实现Comparable>?