gpt4 book ai didi

java-8 - java方法引用中的ContainingType是什么意思

转载 作者:行者123 更新时间:2023-12-02 03:49:15 25 4
gpt4 key购买 nike

Java 方法引用

ContainingClass::staticMethodName - 表示类可以引用静态方法(Reference to a Static Method)

包含Object::instanceMethodName - 意味着首先创建一个类对象,然后该对象用于引用instanceMethod。

我的疑问是

ContainingType::methodName - ContainingType 是什么意思?

ContainingType 是 Java 中的预定义类,如 String 或其他类吗?

最佳答案

Java 语言规范,§4.3. Reference Types and Values :

There are four kinds of reference types: class types (§8.1), interface types (§9.1), type variables (§4.4), and array types (§10.1).

数组类型没有静态方法,因此不适用于静态方法引用,但您可以执行其他 3 个操作:

class MyClass {
static void doIt() {/*doing it*/}
}
interface MyInterface {
static void doIt() {/*doing it*/}
}
class Test<T extends MyClass> {
void test() {
Runnable m1 = MyClass::doIt; // class type
Runnable m2 = MyInterface::doIt; // interface type
Runnable m3 = T::doIt; // type variable
}
}

现在link comment 中提供,它说:

  1. 对静态方法的引用
    ContainingClass::staticMethodName

  2. 对特定对象的实例方法的引用
    containingObject::instanceMethodName

  3. 对特定类型的任意对象的实例方法的引用
    ContainingType::methodName

  4. 对构造函数的引用
    ClassName::new

这里,ContainingType 再次指的是上面提到的 3 种引用类型中的任何一种:类、接口(interface)和类型变量。

然后,您可以为此类类型的任何实例方法创建方法引用。

class MyClass {
void doIt() {/*doing it*/}
}
interface MyInterface {
void doIt();
}
class Test<T extends MyClass> {
void test() {
Consumer<MyClass> m1 = MyClass::doIt;
Consumer<MyInterface> m2 = MyInterface::doIt;
Consumer<T> m3 = T::doIt;
}
}

关于java-8 - java方法引用中的ContainingType是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45953818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com