Diskuze: Vytvoření instance Interface
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, nejspise na pouzijes toto: https://docs.oracle.com/…t/Proxy.html snad je ta url ok
Díky, zítra to zkusím. Jak by se to dalo vyřešit v případě, že mám instanci interfacu ze kterého mimo jiné dědí ten interface jehož instanci chci získat, šlo by to nějak přehodit na to interface co z něj dědí?
A ceho se tim snazis dosahnout? Samotny interface predepisuje kontrakt pro nejakou tridu, ktera to interface implementuje, vyrabet instanci primo z interface je divne.
Nemyslím přímo z interface to samozřejmě ne Špatně jsem se vyjádřil, omlouvám se, mám interface Player které implementuje nějaká classa, a já tomu chci dodat funkce, ale nemůžu editovat zdrojový kód, takže to chci udělat stejně jako ve zmíněném Springu, vytvořím si další interface, který bude dědit z dvou interfacu, z Player a pak CustomPlayer, který je implementován classou CustomPlayerImpl a potřebuji získat tu instanci tak, abych mohl přistupovat k datům classy co implementuje interface Player i CustomPlayer
A ta trida, co implementuje Player, ta je tvoje vlastni nebo ne?
Pokud jde o MC, tak funguje vyrobit wrapper tridu, ktera bere Player jako parametr v konstruktoru a zaroven implementuje interface Player, kde implementaci deleguje do wrapnute instance.
Jinak Kotlin vyse uvedenou vec obsahuje jako syntakticky cukr na jednu radku a navic ma extension metody, ktere by mozna taky sly pouzit.
Ano, jedná se o Spigot, mohl by jsi to více vysvětlit, nebo přiložit nějakou ukázku?
Ok, pokusim se, ale pisu na mobilu, tak omluv muj kod, jestli to nebude 100% validni Java
Tvoje custom trida:
class CustomPlayer implements Player {
private Player player;
public CustomPlayer(Player player) {
this.player = player;
}
// metody z Player
public void sendMessage(String message) {
player.sendMessage(message)
}
...
// custom metody
public void summonPet(PetType type) {}
Jo díky, takhle to stačí, jen jsem se chtěl ujistit, že to chápu dobře
plus samozrejme metoda na ziskani te wrapnute instance, kdyz to budes nekam predavat anebo muzes implementovat i CraftPlayer a dalsi interface, ale to budes mit pak neprenositelne mezi verzemi
Zobrazeno 12 zpráv z 12.