Bazı eski kodlarda, birden çok istemci tarafından çağrılan statik bir yöntem var. Açıkçası onu geçersiz kılacak hiçbir seçenek yok veya bağımlılık enjeksiyonu ile davranışları değiştirebiliyorum. Mevcut sınıfı değiştirmem mümkün değil.Yansıma yoluyla yöntem davranışı nasıl değiştirilir?
Şimdi yapmak istediğim, yansımayı kullanarak davranışı değiştirmektir (bu yöntem - aynı imza ve dönüş türüyle).
mümkün mü? Yoksa, herhangi bir desen kalıbı kurtarır mı?Teşekkürler!
DÜZENLEME: Ne değiştirebileceğime/değiştireceğime dair bazı karışıklıklar var. Mevcut bir sınıfı/yöntemi değiştiremiyorum - ancak projeye daha fazla sınıf ekleyebilirim. Mevcut sınıflarla yapabileceğim en iyi şey onlara açıklama eklenmesidir. Bu, mevcut kodda herhangi bir şeyi kırmaktan kaçınmak için yapılır - bu da büyük bir proje için testin tamamlandığı anlamına gelir.
DÜZENLEME 2: java.lang.Instrumentation Android için mevcut değil - ya da iyi bir uyum gibi geliyor!
Neden yansıma? –
Bunu değiştirmenize izin verilmiyor, ancak yansımayla değişiklik yapma izniniz var mı? Bu daha riskli görünüyor. – Keppil
Sanırım bu bir bakım kâbusuna dönüşecek. Kod okuyan birine yalan söylüyor. Git ve o sınıfı değiştirmek için onay al. – SpaceTrucker