これは非常に悪い OO ですが、コーダー自身以外の誰かが使用するコードにこれを入れようとしているわけではありません。コーダーによるテスト以外では決して呼び出すことはできません。
これが私が直面している問題です。外部で定義された一連のクラスがあります。それらを変更することはできません(もちろん、サブクラス化または呼び出しはできません)。これらにはさまざまな名前がありますが、スーパークラス (オブジェクトを除く) を拡張したり、インターフェイスを実装したりしません。ただし、それぞれについて私が知っていることは、「call」というメソッドがあるということです。
テストのために、これらのクラスの呼び出しメソッドのいずれかを呼び出すコードを作成しようとしています。しかし、もちろん、call はすべての Object に対して定義されているわけではないため、Object.call() とだけ言うことはできません。
基本的に、これは機能します:
MyClassOne classOne = new MyClassOne();
MyClassOneInput classOneInput = new MyclassOneInput();
classOne.call(classOneInput);
しかし、これはしません:
Object clazz = getClassFromElsewhere();
Object clazzInput = getClassInputFromElsewhere();
clazz.call(clazzInput).
明らかに、Java は厳密に型指定された言語です。
しかし、このシステムで作業しているすべての人のテストを 10 倍高速化するために、何らかの方法でそれを回避し、何らかの方法で「call」メソッドを任意のクラスと任意の ClassInput に使用できますか? 間違ったクラスが渡された場合に例外が発生したり、完全に壊れたりしても問題ありません。
オブジェクト指向に違反するのを手伝ってください。