Одно введение:
Перед Javase 1.5, без дженериков, «производительность» параметров была достигнута путем ссылки на объект типа. Недостатком «произвольной» было то, что требовалось явное преобразование типа листа, и это преобразование потребовало, чтобы разработчики предсказывали фактический тип параметра. В случае ошибок преобразования типа листа компилятор может не вызвать ошибку, и исключение будет происходить только при запуске, что является риском безопасности.
Преимущество дженериков состоит в том, что они проверяют безопасность типа при компиляции, и все слепки являются автоматическими и неявными, улучшая скорость повторного использования кода.
2. Общие параметры:
Класс Gen <t> {private t ob; // define generic member variable public gen (t ob) {this.ob = ob;} public t getOb () {return ob;} public void setOb (t ob) {this.ob = ob;} public void showtype () {system.out.println ("фактический тип tis is:" + get -getClass () gateNM.) gate) () gateNAME () () ();) (); Класс genericParameter {public static void main (string [] args) {// определить целочисленную версию общего класса Gen <Integer> intob = new Gen <Integer> (100); intob.showtype (); int i = intob.getob (); System.println ("value =" i);System.out.println("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- выход:
Фактический тип t: java.lang.integer
значение = 100
----------------------------------------------------------------------------------------------------------------------------
Фактический тип t: java.lang.string
Значение = Привет, Дилан!
3. generics:
Класс genericsfoo <t> {private t x; public genericsfoo (t x) {this.x = x;} public t getx () {return x;} public void setx (t x) {this.x = x;}} public class genericclass {public static void main (string args []) {string> strfOoo = new generics = new generics = new generics = new genicsOO genicsOO genicsOO genicsOO genicsOO genicsOO genicsOO genicsOO genics Generics! "); Genericsfoo <Double> doufoo = new GenericsFoo <Double> (новый Double (" 33 ")); GenericSfoo <Object> objfoo = new GenericSfoo <Object> (новый Object ()); System.out.println ("strfoo.getx ="+strfoo.getx ()); system.out.println ("doufoo.getx ="+doufoo.getx ()); system.out.println ("objfoo.getx ="+objfoo.getx ();}}}}}}}}}}}}}}} выход:
strfoo.getx = hello generics!
doufoo.getx = 33,0
objfoo.getx=java.lang.object@1d0fafc
Четырехногированные дженерики:
Импорт java.util.arraylist; import java.util.collection; class collectiongenfoo <t extends collection> {private t x; public collectiongenfoo (t x) {this.x = x;} public t getx () {return x;} public void setx (t x) {this.x = x;}} public class generic generic generic generic generic stems restrict restrict {this.x = x;}} public generic genics {this. {CollectionGenfoo <ArrayList> listFoo = null; listfoo = new CollectionGenfoo <ArrayList> (new ArrayList ()); CollectionGenfoo <? Коллекция extends> listfoo1 = null; listfoo1 = new CollectionGenfoo <ArrayList> (new ArrayList ()); System.out.println ("Instantiaiation успешно!");}} выход:
Экстанция была успешной!
Пять общих методов:
открытый класс GenericFunction {public <t> void f (t x) {System.out.println (x.getClass (). getName ());} public static void main (string [] args) {genericfunction ea = new genericfunction (); ea.f ("); ea.f (10); выход:
java.lang.string
java.lang.integer
java.lang.character
Общая функция
----------------------------------------------------------------------------------------------------------------------------
Дилан представляет.
Суммировать
Приведенное выше содержание этой статьи о подробном объяснении общих примеров в Java, я надеюсь, что это будет полезно для всех. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!