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

用于指定对泛型方法的方法引用的语法

伍皓
2023-03-14
问题内容

我在“ Java-入门指南”中阅读了以下代码

interface SomeTest <T>
{
    boolean test(T n, T m);
}

class MyClass
{
    static <T> boolean myGenMeth(T x, T y)
    {
        boolean result = false;
        // ...
        return result;
    }
}

以下语句有效

SomeTest <Integer> mRef = MyClass :: <Integer> myGenMeth;

关于上述代码的解释,有两点

1-当将通用方法指定为方法引用时,其类型参数::位于方法名称之后和之前。

2-如果指定了通用类,则type参数在类名之后,在::。之前。

我的查询:

上面的代码是第一个引号点的示例

有人可以给我提供一个实现第二个引号的代码示例吗?

(基本上我不明白第二引号)。


问题答案:

第二个引号仅表示type参数属于该类。例如:

class MyClass<T>
{
    public boolean myGenMeth(T x, T y)
    {
        boolean result = false;
        // ...
        return result;
    }
}

然后将这样称呼它:

SomeTest<Integer> mRef = new MyClass<Integer>() :: myGenMeth;


 类似资料:
  • 我有一个有界泛型类,我们称之为泛型,它的参数T扩展了抽象类abstract: 泛型类: 抽象类 泛型类中T引用的类 当尝试引用方法 getMap() 时,该方法来自 T 边界内的类(并且根据抽象类定义,T 的所有可能实例都将具有该方法),我收到以下错误: 不能从静态上下文引用非静态方法getMap() 然而,任何地方都没有静态关键字。我错过了什么?? 谢谢!

  • 问题内容: 为通用Java方法显式提供类型参数的语法是什么? 问题答案: 以下 不是 语法 似乎类型参数 必须 在圆点后,如

  • 问题内容: Eclipse在正在运行的项目中仅使用以下代码(在其中仅包含伪类和main方法)给我警告(标题中): 最后一行触发警告。我不确定我在这里做错了什么,或者实际上我在做什么。我是一名Java学生,正在研究一个可疑的教程,并且试图理解泛型。假设变量x不能说明类型安全性。我尝试将其强制转换为对象类型(我认为它没有任何作用,因为它已经存在了),并且不起作用。 我如何解决此警告? 问题答案: 您声

  • 我一直在尝试泛型,很快我就遇到了一些我无法解释的事情 例如: 我不明白

  • 安吉丽卡·兰格(Angelica Langer)在关于仿制药的常见问题解答中说(参见Technicalities.FAQ822): 如果这些方法具有具有不同边界的类型参数,则它们不会重写,因为这些方法的签名不是重写等价的。请记住,类型参数边界是泛型方法签名的一部分。 示例(泛型子类型方法重载泛型超类型方法;不推荐): 我不明白为什么方法在类中重载。据我所知,这应该是一个编译时错误,因为在和中具有相

  • 在研究泛型时,我注意到泛型方法和泛型类型(类或接口)在类型引入语法上的一个差异使我感到困惑。 泛型方法的语法为 文件上说 为了彼此保持一致,我希望方法语法为 ,或者类型语法(for class)为,但事实显然并非如此。 为什么一个要介绍在前,另一个要介绍在后? 我主要以的形式使用泛型,并认为可能看起来很奇怪,但这是一个主观的参数,此外对于方法也是这样。您可以调用,类似于 在寻找技术解释时,我想在指