SORU
27 AĞUSTOS 2015, PERŞEMBE


Java uyumlu joker zorlanarak Jenerik

Bu dersler verdim.

class RedSocket {}
class GreenSocket {}
class RedWire {}
class GreenWire {}

2 Genel türler kullanan bir Dersim var

public class Connection<W, S> {}

W Kablo tipi & S nerede Soket türü.

Soket & Tel aynı renkte olmasını sağlamak için derleme zamanı kontrol zorlamak için çalışıyorum.

Ben bunu denedim:

public class Connection<W extends Wire & Color, S extends Socket & Color> {}

interface Color {}

interface Red extends Color {}
interface Green extends Color {}

interface Socket {}
interface Wire {}

class RedSocket implements Socket, Red {}
class GreenSocket implements Socket, Green {}
class RedWire implements Wire,  Red {}
class GreenWire implements Wire, Green {}

Ama bu gerçekten Color kullanılan her iki genel türleri için aynı olduğundan emin olun değil ve hala bana bunu sağlar

public class Connection<W extends Wire & Color, S extends Socket & Color> {
    public static void main(String[] args) {
        new Connection<RedWire, GreenSocket>();
        new Connection<GreenWire, RedSocket>();
    }
}

(Neden böyle ışıl ışıl here Radiodef) tarafından açıklandı

Nasıl yuva ve tel aynı renkte olmasını sağlamak için derleme zamanı kontrol zorlayabilir miyim?

CEVAP
27 AĞUSTOS 2015, PERŞEMBE


Daha iyi renk ile Socket Wire parametrelerle ifade etmek için bu gibi görünüyor:

interface Socket<C extends Color> {}
interface Wire<C extends Color> {}

class RedSocket implements Socket<Red> {}
class GreenSocket implements Socket<Green> {}
class RedWire implements Wire<Red> {}
class GreenWire implements Wire<Green> {}

Bu şekilde Connection bir daha genel parametre tanıtabilirsiniz:

public class Connection<C extends Color, M extends Wire<C>, Q extends Socket<C>> {...}

Ve aşağıdaki gibi kullanabilirsiniz:

new Connection<Red, RedWire, RedSocket>(); // ok
new Connection<Green, GreenWire, GreenSocket>(); // ok
new Connection<Green, GreenWire, RedSocket>(); // error

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ★TheCrono Official Channel★

    ★TheCrono

    3 Mayıs 2014
  • ehowhome

    ehowhome

    22 NİSAN 2009
  • GoogleTechTalks

    GoogleTechTa

    15 AĞUSTOS 2007