泛型程式設計(generic programming)是程式設計語言的一種風格或範式,它允許程式設計師在編寫代碼時使用一些以後才指定的類型,並在實例化時作為參數指明這些類型。泛型的本質是為了將類型參數化,也就是說在泛型使用過程中,數據類型被設定為一個參數,在使用時再從外部傳入一個數據類型。這種參數化類型可以用在類、接口和方法中,分別被稱為泛型類、泛型接口、泛型方法。
泛型的主要優點包括類型安全,它可以將類型檢查轉移到編譯器,降低強制類型轉換的必要性和運行時錯誤的可能性,提高代碼的重用性和性能。例如,泛型集合類可以將類型形參用作其存儲的對象類型的占位符,類型形參呈現為其欄位的類型和其方法的參數類型。在.NET 中,開發人員隨時會使用泛型,有時隱式使用,有時顯式使用。
各種程式設計語言和其編譯器、運行環境對泛型的支持均不一樣。例如,Ada、Delphi、Eiffel、Java、C#、F#、Swift和Visual Basic .NET稱之為泛型(generics);ML、Scala和Haskell稱之為參數多態(parametric polymorphism);C++和D稱之為模板。