Bazı nedenlerle, sınıfına başka bir sınıf Z
, bir Y
, bir ClassCastException
atar. Bu sınıf X
diğer sınıfını Y
uzanır gibi görerek, bana yanlış geliyor. sınıf X
onu genişletir Y
bile X
olsa artığını edilemedi neden özel bir sebebi var mı?X Y uzanır halde bir sınıf "Y" için bir sınıf "X" dökme olmaz mı?
Y
:
public abstract class Y {
/**
* Called when the extension is enabled.
*/
public void onEnable() {
}
}
X
:
public class X extends Y {
@Override
public void onEnable() {
// Extension specific code.
}
}
Z
: (Bu kod t
kullanım için aşağıdaki kod bakınız Nerede ClassCastException
kaynaklanır kod.) loader.loadClass(description.getMain()).newInstance();
X
yeni bir örneğini oluşturmak için bilinir
public class Z {
private boolean loadExtension(ExtensionDescription description) {
try {
URLClassLoader loader = new ExtensionClassLoader(new URL[]{description.getFile().toURI().toURL()});
Y y = (Y) loader.loadClass(description.getMain()).newInstance();
} catch (Throwable t) {}
}
}
, o zaman Y
neden bir ClassCastException
için döküm neden?
bir Custom ClassLoader
oluşturun, örneğin:
iki farklı sınıf yükleyiciler –
tek nedeni olurdu Ben bunu düşünüyorum. Z sınıfı kendi programında çalışırken, X sınıfı, Z sınıfının çalıştırıldığı program tarafından çalıştırılan bir programda çalışmaktadır. (Bu mantıklıysa, oldukça karmaşıktır.) Ana programın sınıf yükleyicisini nasıl alacağımı anlamanız gerekebilir. – TheCodingFrog
@TheCodingFrog tarafından yüklenen X ve Y aslında hiçbir kesin sorun olabilir Yani nerede description.getMain() '. –