多くの場合、リフレクションは肥大化したコードまたは誤って設計されたAPIに関連付けられています。
猫の下には、反射の肯定的な側面を示す有用な例がいくつかあります。
アヒルの選別について訓練します。
public interface ISort { int[] sort(int[] ints); } public class MergeSort implements ISort {
すぐに多くの種類の研究をしたい状況を想像してください。それらすべてが機能し、テストされることを望みます。
しかし、私たちはすべてのアルゴリズムのテストを書くのが面倒です。 したがって、ISortインターフェイスのみをテストし、他のすべてのクラスは、まるで自分自身でテストされるかのようにテストします)
さて、これで怠nowの勝利を公式に発表できます。
並べ替えテストは、このようなクラスの作成に削減されます
class MergeSortTest extends ISortTest<MergeSort> {
同様のアプローチが、たとえばSpring Dataで使用されています。
public interface TestRepository extends CrudRepository<MyEntity, Long> { }
また、私たちが知らない他の場所でも。