Bu kötü bir şekilde ya da arama yeteneğine sahip olsaydı, bu konuda bir şey bulamadım ve neredeyse tamamen kendime öğrettim.Bir nesneyi aynı yöntem içinde 2 farklı şey olarak dökmek mümkün mü?
Entity
sınıfı ve birden fazla alt sınıf var, Building
ve Creature
burada ilgili olanlardır.
Building
ve Creature
sınıfları için kullanmak istediğim bir setTarget(Entity e)
yöntemine sahibim, çünkü bu düzeyde aynıdır.
Aynı koda sahip 2 tam yöntem oluşturmak yerine, ne tür bir türe bağlı olarak Building
veya Creature
ya da bir e basmanın mümkün olup olmadığını merak ediyorum.
private void setTarget(Entity e) {
if (e.getType.equals("Creature")) {
Creature c = (Creature)e; //rest of code assumes c is now a creature rather than a building
}
}
ben Entity
sınıfında hedef mekaniği koyarak bunu yapabileceğini fark ama sonra o kodu/hedefleriniz gerekmez tüm diğer alt sınıflara alakasız olurdu.
Her türlü yardım veya ipucu için şimdiden teşekkür ederiz.
DÜZENLEME: Ben instanceof baktım ve kesinlikle kod biraz temizler ama kimse ne demek istediğimi anlamaya;
private void setTarget(Entity e) {
if (e instanceof Creature) {
Creature c = (Creature)e;
} else if (e instanceof Building) {
Building c = (Building)e;
}
//Building OR Creature code here ie;
c.setTarget();
}
Bu mümkün mü?
görünüyor sıklığıdır. Polimorfizm kullanıyorsanız, bu kolayca elde edilebilir. –
Tüm bu kodu neden tek bir satıra koydunuz? Okumak imkansız. –
'if' ifadenizde 'e.getClass(). Equals (Creature.class)' veya 'instanceof Creature 'öğesini kullanabilirsiniz. – Majora320