eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingImplementacja typów generycznychRe: Implementacja typów generycznych
  • Data: 2010-07-07 15:00:14
    Temat: Re: Implementacja typów generycznych
    Od: "Sakujami" <s...@n...gmail.to> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Użytkownik "Sakujami" <s...@n...gmail.to> napisał w wiadomości
    news:i1231e$i8f$1@news.onet.pl...
    > Czyli nie da się napisać funkcji max dla typu generycznego gdzie można by
    > wstawić zarówno int jak i double. Czy w Javie w miejsce typu generycznego
    > można wstawić tylko klasy ?

    Już mówię o co mi chodzi:
    W Delphi od 2009 możemy mieć:
    ================================================
    unit Unit1;

    interface
    uses
    Generics.Collections;

    type

    MyTList<T> = class(TList<T>) // TList is a class in the
    Generics.Collections namespace
    FItems: array of T;
    protected
    function GetLength: Integer;
    public
    function Get(Index: Integer): T;
    published
    property Len: Integer read GetLength;
    end;

    { ScoreList derived from a TList<double>}
    ScoreList = class(MyTList<double>)
    end;
    { StringList derived from a TList<string>}
    StringList = class(MyTList<string>)
    end;

    implementation

    function MyTList<T>.GetLength: Integer;
    begin
    Result := Count;
    end;

    function MyTList<T>.Get(Index: Integer): T;
    begin
    Result := Items[Index];
    end;

    end.
    ================================================
    W dpr mamy wołanie
    var
    Lista1: MyTList<TObject>;
    Lista2: MyTList<integer>;
    Lista3: MyTList<array[0..5] of char>;
    begin
    Lista1:=MyTList<TObject>.Create;
    Lista1.Add(nil);
    Lista1.Free;
    Lista2:=MyTList<integer>.Create;
    Lista2.Add(5);
    Lista2.Free;
    ================================================
    Widać że typy to moga być nie tylko klasy lae dowolne. W tym przypadku mamy
    duplikowanie się kodu nie tylko Unit1 ale i unitu Generics.Collections. Jak
    to mogło zostać zaimplementowane, w .dcu nie może być już kodu wykonywalnego
    ale prekompilowany szkielet który dalej się kompiluje? A jeszcze więcej
    zastanawiające gdy klasa uogólniona jest w DLL czy dokładniej mówiąc, czy
    może być w BPL?


Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: