Почему не ява найти мой метод?
Из-за того, что была разработана Java.
Java является "statically typed", что означает, что проверяются типы объектов во время компиляция.
В Java вы можете вызывать метод, только если этот метод принадлежит этому типу.
Поскольку эта проверка выполняется во время компиляции, а тип объекта не имеет метода «test()», компиляция не выполняется (хотя, если во время выполнения объекты имеют этот метод ».Это в первую очередь касается безопасности.
обходной, как описано другими потребует от вас, чтобы создать новый тип, где вы можете сказать компилятору
«Эй, экземпляры этого типа будет реагировать метод тестирующего»
Если вы хотите передать множество объектов и сохранить их очень универсальными, один из способов - реализовать эти объекты и интерфейс.
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
pubic 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 является вызов методов reflectively, но я не уверен, что это то, что вам нужно, для кода гораздо более абстрактные, когда вы делаете это именно так, но это то, как фактически работают автоматизированные рамки тестирования (многие другие структуры, такие как Hibernate).
Надеюсь, это поможет вам прояснить причину.
Как хорошая практика, имена классов должны начинаться с прописной буквы. –
Отмечено - спасибо большое. – barfoon