繁体   English   中英

在实例被声明之前,如何通过类方法作为参数?

[英]How to pass class method as a parameter before the instance is declared?

我想做的就是这样。 我的问题是如何在内部调用tm.test。

// TestMain is a class implemented handler

public void outer() {
    inner(TestMain::test);  // call inner
}

public void inner(handler h) {
    TestMain tm = new TestMain();
    //invoke tm.h(), i.e. invoke tm.test() in this example
}

public interface handler<M> {
    void entitySelector();
}
  • 我知道如何在外部方法中声明tm的情况下在内部调用tm.test,即将函数传递为tm :: test
  • 但是我每次调用inner时都必须声明该实例。

简单地说:您不能。 甚至有可能,您也不应该那样做。

这里有一个“最少惊喜的原则”:您不是在阅读代码的人告诉您“ wtf ?!”。 因为您的代码使他们感到惊讶。

换句话说:您应该退后一步,看看您的设计是否真的如此。 例如,您不能使用固定的tm实例吗? 属于您课堂上的一员; 而不是在您的方法中成为局部变量?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM