当前位置: 首页 > 面试题库 >

Groovy泛型失败

茹元魁
2023-03-14
问题内容

除了groovy之外,还有比Java更动态的方法。

为什么这是groovy中的编译时错误(意外令牌<):

interface A {
     <T> T getByClass(Class<T> clazz)
}

我该如何编写这种时髦的方式?


问题答案:

Groovy解析器不处理以通用信息开头的方法签名。

它解析是否添加public修饰符:

interface A {
  public <T> T getByClass( Class<T> clazz )
}

虽然我不相信您会在编译时获得任何用于添加此批注的类型检查



 类似资料:
  • 问题内容: 我使用Groovy,JUnit和EasyMock为Java应用程序编写单元测试。在EasyMock中,有几种重载方法已被弃用,其注释为“由于执行更严格的擦除操作,因此无法在Java 7中编译”。这些方法将类型为的对象作为参数。除其他外,存在以下方法: … Java不再允许这样做,但是如果您直接从Java调用该代码,则会调用正确的方法。例如,当您执行此代码时 正确的方法(列表中的最后一个

  • Groovy中的简单泛型类 Groovy版本: 这是我做的一个简单的测试用例,当一个更复杂的类不能编译时,错误是“不能将类型T的值赋给类型double[]的变量”。

  • 我有Java8 Groovy 2.4.12和下面的代码编译和运行。 但是如果你注释掉< code>return,编译器会说 此外,如果您注释掉值分配,那么它又可以了。因此,下面的代码编译并运行: 这似乎是一种特殊情况,只有在以下情况下才会发生: 注释 具有两个参数的泛型方法;第一个是泛型类型,第二个是相同泛型类型的接口 调用该泛型方法,第二个参数作为闭包,全部包装在另一个闭包中。 调用前的变量声明

  • 如何获取这个类的类型?对于上下文,我使用ModelMapper,我需要类类型T从S转换为T。 背景: 我已经尝试了N种方法,其中我放置了“//一些方法来获取类型”,但没有任何效果。例如: 或

  • 问题内容: 我有一个代表文本片段的泛型类。该文本片段可能具有多种不同模式(突出显示的不同类型)中的任何一种。这些模式用枚举表示。每个项目的Enum可能不同,但是它必须实现一个接口,该接口提供了一种将其中两个结合的方法(可以突出显示并加粗显示)。所以我有一个界面: 然后我的TextFragment是文本字符串和模式的容器。但是当我尝试声明该类时: 我收到以下错误: 令牌“扩展”的语法错误,预期 根据

  • 理论之后,我们转移到一些实际功能上面,这会让我们更加简单地掌握它。为了不重复发明轮子,我使用三个Kotlin标准库中的三个函数。这些函数让我们仅使用泛型的实现就可以做一些很棒的事情。它可以鼓舞你创建自己的函数。 let let实在是一个简单的函数,它可以被任何对象调用。它接收一个函数(接收一个对象,返回函数结果)作为参数,作为参数的函数返回的结果作为整个函数的返回值。它在处理可null对象的时候是