Intellij IDEA - 返回子类时找不到方法

问题描述 投票:0回答:1

我使用Intellij IDEA进行php开发。

class A {
}

class B extends A {

  public function myFunc() {}

}

class C {

  /**
     * Return class object
     *
     * @return A
     */
  public function get() {
    return $a_or_child_a_class_from_some_list;
  }

}

$cObject = new C();
$cObject
  ->get()
  ->myFunc();// Intellij say that method not found. How pretty resolve this problem?

我在C代码基于类A返回对象的情况下我的代码是如何说明的。我可以说Intellij在这种情况下我使用了B类 - > myFunc()方法。是的,我可以在@reuturn课程中枚举,但它不是解决方案。也可以用B类/*@type B*/来描述$ cObject-> get()但它并不好。

你能建议什么?

php intellij-idea
1个回答
1
投票

好吧,显然你的类A没有定义方法myFunc(),那么为什么IntelliJ会解析方法名?

您应该将返回类型描述为B,在myFunc()中定义抽象方法class A或(在我看来最好的选项)定义具有方法签名的接口,并将接口声明为get()方法的返回类型。

编辑:如果定义一个抽象方法,那么该类也必须是抽象的。所以在你的情况下,如果你不想将A声明为抽象,你可以简单地用空体定义一个方法myFunc()

© www.soinside.com 2019 - 2024. All rights reserved.