- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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
}
}
对静态方法的引用ContainingClass::staticMethodName
对特定对象的实例方法的引用containingObject::instanceMethodName
对特定类型的任意对象的实例方法的引用ContainingType::methodName
对构造函数的引用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/
我是一名优秀的程序员,十分优秀!