Почему я не могу найти мой метод?
Из-за способа, которым была разработана Java.
Java "статически типизирован" , что означает, что типы объектов проверяются во время компиляции.
В Java вы можете вызывать метод, только если этот метод принадлежит этому типу.
Так как эта проверка выполняется во время компиляции и тип объекта не имеет метода «testing ()», компиляция завершается неудачно (даже если во время выполнения объекты имеют этот метод ». Это в первую очередь для безопасности.
Обходной путь, описанный другими, потребует от вас создания нового типа, в котором вы можете указать компилятору
«Эй, экземпляры этого типа будут отвечать на метод тестирования»
Если вы хотите передать множество объектов и сделать их очень универсальными, один из способов заключается в том, чтобы эти объекты реализовывать и взаимодействовать.
public interface Testable {
public void testing();
}
class A implements Testable { // here this class commits to respond to "testing" message
public void testing() {
}
}
class B implements Testable { // B "is" testable
public void testing() {
System.out.println("Testing from b");
}
}
class C implements Testable { // C is... etc.
public void testing() {
//....
}
}
Позже где-то еще
public void doTest( Testable object ) {
object.testing();
}
doTest( new A() );
doTest( new B() );
doTest( new C() );
"ДРУГОЙ" способ сделать это, в Java вызывает методы рефлексивно , но я не уверен, что это то, что вам нужно, потому что код гораздо более абстрактный, когда вы делаете это, что Да, но именно так на самом деле работают фреймворки автоматизированного тестирования (и многие другие фреймворки, такие как Hibernate).
Надеюсь, это поможет вам выяснить причину.