ကွန်ပျူတာများပရိုဂရမ်းမင်း

ဂျာဗား General: ဖော်ပြချက်များနှင့်နည်းလမ်းများ

က Java language ၏အသွင်အပြင်နှင့်အတူစတင်ခြင်းခြောင်း၏လုပ်ဆောင်နိုင်စွမ်းအတွက်အပြုသဘောအချိန်လေးဆောင်ခဲ့သောအပြောင်းအလဲအများကြီးခံခဲ့သည်။ ဤအသိသာထင်ရှားသောအပြောင်းအလဲများကိုတစ်ခုမှာဂျာဗား Generic သို့မဟုတ်စစ်ဗိုလ်ချုပ်များ၏နိဒါန်းဖြစ်ပါတယ်။ ဤလုပ်ဆောင်ချက်သည်သာဒေတာအမျိုးအစားများကိုဆောင်ခဲ့၏စည်းကမ်းချက်များ၌ဘာသာစကားကိုပိုပြီးပြောင်းလွယ်ပြင်လွယ်ခြင်းနှင့်စွယ်စုံ, ဒါပေမယ့်လည်းအများကြီးပိုလုံခြုံပါစေ။

အမှန်မှာဂျာဗားယေဘုယျကုဒ်အတွက် General ၏နိဒါန်းမှကြိုတင်မသာ type ကိုရည်ညွှန်းအရာဝတ္ထု၏စည်းကမ်းချက်များ၌, နေသူများကဖန်တီးနိုင်သောကြောင့်ဖြစ်သည်။ ထိုသို့သောလင့်များဆိုအရာဝတ္ထုတာဝန်ပေးနိုင်ပါတယ်။ ပြီးနောက်ရှိသမျှတို့, ဂျာဗား၌အတန်းသွယ်ဝိုက် Object ကိုလူတန်းစားအမွေခံဖြစ်ကြသည်။ သို့သော်ဤချဉ်းကပ်မှုပစ်မှတ်အမျိုးအစားဖို့အရာဝတ္ထုကနေ object တစ်ခု၏သိသာပြောင်းလဲခြင်းအတွက်လုံခြုံရေးအမျိုးအစားများနှင့်ဆက်စပ်သောအများအပြားအမှားအယွင်းများတဲ့အလားအလာအရင်းအမြစ်ဖြစ်ပါတယ်။ ယေဘုယျအသုံးပြုတဲ့အခါအားလုံး Cast အမှားအယွင်းများအဘို့အပင်အလားအလာဖျက်သိမ်းရေး, လုံးလုံးလြားလြားအလိုအလျောက်လုပ်ဆောင်နေကြသည်။

ဂျာဗား General: ဖော်ပြချက်များနှင့်ဥပမာ

ကျွန်တော်တို့ကိုအောက်ကပုံထဲမှာပုံမှန်အတန်းမှအစဉ်အဆက်လျှောက်လွှာတစ်ရိုးရှင်းတဲ့ဥပမာကိုစဉ်းစားကြပါစို့။ ပြီးတော့ဂျာဗား Generic အပေါငျးတို့သပရိယာယ်နှင့်တစ်ခုလုံးကိုပြည့်ပြည့်စုံစုံ၏အသေးစိတ်စာမေးပွဲမှဆက်လက်ဆောင်ရွက်။

အတန်းကြေငြာ Pair ကိုဖြစ်ပေါ်ရသောလမ်းကိုအာရုံစိုက်။ ချက်ချင်းလူတန်းစားနာမကိုအမှီပြီးနောက်, ဤအတန်းအစားတစ်ခုဥပမာပြောရရင်အတွက်လုပ်ငန်းစဉ်၌တည်သော Filler တစ်ဦးကြင်ကြင်နာနာ, တစ်ခုဖြစ်သည်စာ T. ညွှန်ပြပေးသောပွင့်လင်းထောင့်ကွင်းခတ်တစ်ဦးသတ်သတ်မှတ်မှတ်အမျိုးအစားဖြင့်အစားထိုးပါလိမ့်မည်။ အောက်မှာဖော်ပြထားတဲ့အတိုင်းပုံပေါ်သည်: Pair ကို obj = သစ်ကို Pair ကို () ။ ဒါဟာအစား T ကမဆိုအက္ခရာသတ်မှတ်နိုင်ပေမယ့်, စည်းကမ်းအဖြစ်, T, V ကိုသို့မဟုတ်အီးအသုံးပြုသတိပြုသင့်ပါတယ်

မှတ်စု: လုပ်ငန်းခွင်ထဲမှာကြေညာရည်ညွှန်းထောင့်ကွင်းခတ်အချည်းနှီးသောကနျြရစျနိုငျသောအခါပစ်မှတ်အမျိုးအစားသတ်မှတ်ခြင်း, Java ၏အဋ္ဌမဗားရှင်းနဲ့စတင်။ Pair ကို obj = သစ်ကို Pair ကို <> (): ဒီတော့အပေါ်ကဥပမာအဖြစ်ပြန်လည်ပြင်ဆင်ရေးနိုင်ပါသည်။

တစ်ဦးလူတန်းစားထို့နောက်သူ့ခန္ဓာကိုယ်အတွက်အစားလယ်ကွင်း, link သင်အက္ခရာကိုသုံးနိုင်သည်နည်းလမ်းများအားဖြင့်ပြန်လာသောတ္ထု၏တိကျသောအမျိုးအစားများ, ထိုကဲ့သို့သောလမ်းအတွက်ကြေငြာသောအခါ။ T ကအတန်းအရာဝတ္ထုဖန်တီးအထူးသဖြင့်အမျိုးအစားဖြင့်အစားထိုးအခါကတည်းကဤကိစ္စတွင်အတွက်ပထမနှင့်ဒုတိယလယ်ကွင်းအမျိုးအစား Integer ၏ဖြစ်လိမ့်မည်။

အဆိုပါအငြင်းပွားမှုများနှင့် firstItem secondItem ၏ယုတ္တိဗေဒအပြီးတွင်လည်းအမျိုးအစား Integer သို့မဟုတ် subclass ၏ဖြစ်ရမည်သင့်လျော်သောလုပ်ငန်းခွင်တွေကိုရည်ညွှန်းပါတယ်။ သင်တစ်ဦးအရာဝတ္ထုဖန်တီးသောအခါသတ်မှတ်ထားသောခဲ့ရာကနေခြားနားတဲ့ဒေတာအမျိုးအစား transmit လုပ်ဖို့ကြိုးစားလျှင်, compiler ကဒီအမှားမသွားပါစေလိမ့်မယ်။ Pair ကို obj = သစ်ကို Pair ကို <> (အသစ် Integer (1) သစ် Integer (2)) ကိုအောက်ပါအတိုင်း object တစ်ခုဖြစ်လိမ့်မည်သည့်အခါထို့ကြောင့်အငြင်းပွားမှုများလုပ်ငန်းခွင်။ အလားတူအဆိုပါအငြင်းပွားမှုများနှင့်နည်းလမ်းများ setFirst setSecond သက်ဆိုင်သည်။ ထိုသို့သင်ဖြစ်နိုင်နည်းလမ်းများ getFirst getSecond, မှန်းဆင့်ခြင်းနှင့်အမျိုးအစား Integer ၏တန်ဖိုးပြန်လာပါလိမ့်မယ်။

အတော်ကြာ parameters တွေကိုအတန်းအစားပုံစံများကိုအတူယေဘူယျ

generalized အတန်းထဲတွင်လည်းကော်မာနှင့်အတူထောင့်ကွင်းခတ်ထားသောအမျိုးအစားမျိုးစုံ parameters တွေကိုကြေညာနိုင်ပါတယ်။ Pair ကိုအတန်းအစားအောက်တွင်ဖော်ပြထားသောတင်ပြထားပါသည်တစ်ဦးအမှုအားဖြင့်ဒီဇိုင်း။

သငျသညျမွငျနိုငျသကဲ့သို့သငျထောင့်ကွင်းခတ်၌ဤအတန်းအစားတစ်ခုဥပမာအားဖြင့်ဖန်တီးအခါ, parameters များကိုအဖြစ်အမျိုးအစားများ၏တူညီသောအရေအတွက်ကညွှန်ပြသင့်ပါတယ်။ သင်တစ်ဦးမြေပုံအဖြစ် data တွေကိုဖွဲ့စည်းပုံ၏ဤအမျိုးအစားနှင့်ရင်းနှီးကျွမ်းဝင်လျှင်, သင်ကအတိအကျတူညီမူအရတစ်ခုကိုတွေ့မြင်နိုင်သည်။ တန်ဖိုးကိုအမျိုးအစား - အဲဒီမှာပထမဦးဆုံးအငြင်းအခုံ key ကိုအမျိုးအစား, ဒုတိယသတ်မှတ်ပါတယ်။ ဒါဟာ object တစ်ခုအငြင်းပွားမှုများထပ်စေခြင်းငှါလာသောအခါအမျိုးအစားများမှတဆင့်ကူးစက်သောကြောင်းမှတ်သားရပါမည်။ ဥပမာအားဖြင့်, အောက်ပါကြော်ငြာ Pair ကိုလူတန်းစားဥပမာအားဖြင့်လုံးဝမှန်ကန်သောဖြစ်ပါသည်: Pair ကို obj ။

အစဉ်အဆက်အခြို့သော features တွေ

နောက်ထပ်မသွားမီက Java ကို compiler ကအတန်း Pair ကို၏ကွဲပြားခြားနားသောဗားရှင်းကိုမဖန်တီးပါဘူးသတိပြုရပါမည်။ တကယ်တော့တစ်ဦး generalized type ကိုရေးသားထား၏လုပ်ငန်းစဉ်များတွင်အချက်အလက်တွေအားလုံးကိုဖျက်ပစ်နေပါတယ်။ အဲဒီအစားသင် Pair ကိုလူတန်းစား၏အထူးဗားရှင်းအတွက်သင့်လျော်သောအမျိုးအစားများကိုဆောင်ခဲ့ရမည်။ သို့သော်ပရိုဂရမ်တွင်လူတန်းစားသာယေဘုယျဗားရှင်းနေဆဲရှိသေး၏။ ဤဖြစ်စဉ်ကိုဂျာဗား Generic သန့်ရှင်းရေး type ကိုခေါ်ခြင်းဖြစ်သည်။

အရေးပါသောအချက်သတိပြုပါ။ တူညီသော java ယေဘုယျလူတန်းစား၏ကွဲပြားခြားနားသောဗားရှင်း links တဦးတည်းနှင့်အတူတူပင်အရာဝတ္ထုထောက်ပြလို့မရပါဘူး။ Pair ကို obj1 နှင့် Pair ကို <နှစ်ချက်> obj2: ဒါကကျွန်တော်နှစ်ခုလင့်များရှိတယ်ဆိုပါစို့ဖြစ်ပါသည်။ အကျိုးဆက်အညီ obj1 = obj2 မှားယွင်းမှုတစ်ခု။ နှစ်ဦးစလုံးရဲ့ variable type ကို Pair ကို ဖြစ်ကြ၏သော်လည်း, သူတို့သည်ရည်ညွှန်းသောအရာဝတ္ထုကွဲပြားခြားနားကြသည်။ ဤသည်က Java Generic လုံခြုံရေးအမျိုးအစားများတစ်ဦးချုပ်သာဓကဖြစ်ပါတယ်။

ယေဘုယျအတန်းအပေါ်ကန့်သတ်

ထိုသို့ယေဘုယျလူတန်းစား java အငြင်းအခုံဟာလူတန်းစားအမျိုးအစားဖြစ်ရမည် parameters တွေကိုသွားဖြစ်ပါတယ်, General သာရည်ညွှန်းအမျိုးအစားများမှလျှောက်ထားနိုင်ပါသည်သင်သိရရန်အရေးကြီးပါသည်။ နှစ်ဆသို့မဟုတ်ရှည်လျားထိုကဲ့သို့သောဥပမာအဖြစ်ဒီရိုးရှင်းတဲ့အမျိုးအစားများ, ပြောင်းရွှေ့ရနိုင်မှာမဟုတ်ဘူး။ Pair ကို obj: တနည်းအားဖြင့်အောက်ပါလိုင်း Pair ကိုလူတန်းစားကြေငြာခွင့်ပြုမထားပေ။ တစ်ဦးချင်းစီစရိုက်တွေအမျိုးအစားများအတွက်သက်ဆိုင်ရာဂျာဗား wrapper လူတန်းစားလည်းမရှိအဖြစ်သို့သော်ဤန့်အသတ်တစ်ခုအလေးအနက်ပြဿနာမဟုတ်ပါဘူး။ Pair ကို obj = သစ်ကို Pair ကို <> (25, မှန်): သင်အနေနဲ့ integer ဖြစ်တဲ့အတွက် encapsulate ချင်နဲ့ Boolean တန်ဖိုးကို avtoupakovka သင်တို့အဘို့အရာခပ်သိမ်းကိုတတ်အတန်း Pair ကိုလျှင်တင်းကြပ်စွာစကားပြောခြင်း။

နောက်ထပ်လေးနက်န့်အသတ်သို့သော်လည်း parameter အမျိုးအစားတစ်ခုဥပမာအားဖန်တီးရန်နိုင်ခြင်းဖြစ်ပါတယ်။ ဥပမာအားဖြင့်, အောက်ပါလိုင်းတစ်စုစည်းအမှားဖြစ်ပေါ်စေပါလိမ့်မယ်: ကို T ပထမဦးဆုံး = အသစ်များကို T က () ။ သင်တစ်ဦးအငြင်းအခုံအပြည့်အဝလူတန်းစားသို့မဟုတ်စိတ္တဇလွန်, ဒါမှမဟုတ်ပင် interface ရှိမရှိကြိုတင်မသိရပါဘူးဘာဖြစ်လို့လဲဆိုတော့ဒီသိသာသည်။ အလားတူ Array ကိုဖန်တီးတတ်၏။

ကန့်သတ်အမျိုးအစားများ

အတော်လေးမကြာခဏအခြေအနေများကြောင့်ယေဘုယျလူတန်းစား Java တစ်ခုအငြင်းအခုံအဖြစ်ကူးမြောက်နိုင်အမျိုးအစားများစာရင်းကိုကန့်သတ်ရန်ရန်လိုအပ်သောအခါရှိပါသည်။ ငါတို့လူတန်းစား Pair ကိုငါတို့သည်သူတို့အပျေါမှာနောက်ထပ်သင်္ချာစစ်ဆင်ရေးများအတွက်သာကိန်းဂဏန်းတန်ဖိုးများ encapsulate ချင်ကြောင်းယူဆပါစို့။ ဒီလိုလုပ်ဖို့ကျနော်တို့က parameter သည်အမျိုးအစားအထက်ကန့်သတ်သတ်မှတ်ဖို့လိုအပ်ပါတယ်။ ဒါဟာထောင့်ကွင်းခတ်ထဲမှာလွန်အပေါငျးတို့သအငြင်းပွားမှုများအမွေဆက်ခံမယ့် superclass ကြော်ငြာနည်းလမ်းဖြင့်နားလည်သဘောပေါက်ထားပါသည်။ အောက်မှာဖေါ်ပြတဲ့အတိုင်းဒါဟာကြည့်ရှုမည်: လူတန်းစား Pair ကို ။ ဒီထုံးစံမှာ compiler ကြောင့်အစား parameter သည် T ရဲ့အစားထိုးသို့မဟုတ်နံပါတ်လူတန်းစားသို့မဟုတ်ယင်း၏ subclasses ၏တဦးတည်းရနိုင်နေပါသည်။

ဒါကသာမန်ဧည့်ခံသည်။ ထိုသို့သောကန့်သတ်မကြာခဏတဦးတည်းနှင့်အတူတူပင်အတန်းထဲတွင်လိုက်ဖက်တဲ့အမျိုးအစား parameters များကိုပေးအသုံးပြုကြသည်။ ကျွန်တော်တို့ရဲ့လူတန်းစား Pair ကိုအတွက်ဥပမာစဉ်းစားကြည့်ပါ: လူတန်းစား Pair ကို ။ ဤတွင်ကျနော်တို့အမျိုးအစား T ကမတရားဖြစ်နိုငျသော compiler ကပြောနဲ့ V ပုံစံ T ကအမျိုးအစားသို့မဟုတ်ယင်း၏ subclasses ၏တဦးတည်းဖြစ်စေရပါမည်။

က "အောက်ခြေ" ကန့်သတ်အတိအကျတူညီနည်းလမ်းဖြစ်ပါတယ်, ဒါပေမယ့်အစားစကားလုံးများ၏စကားလုံးစူပါစာလုံးပေါင်းဖို့ကိုတိုးချဲ့။ ဒါကလျှို့ဝှက်လူတန်းစား Pair ကို ဖြစ်ပါတယ်အစား T ရဲ့အစားထိုးသို့မဟုတ် ArrayList, သို့မဟုတ်ပါကအမွေမလူတန်းစားသို့မဟုတ် interface ကိုခံရအံ့သောငှါကပြောပါတယ်။

generic ဂျာဗားနည်းလမ်းများနှင့်တည်ဆောက်

ဂျာဗား၌, ယေဘုယျအားဖြင့်အတန်း, ဒါပေမယ့်လည်းနည်းလမ်းများမှသာလျှောက်ထားနိုင်ပါသည်။ ဥပမာ, ယေဘုယျနည်းလမ်းမှန်မှန်စာသင်ခန်းထဲမှာကြေငြာနိုင်ပါသည်။

အထက်ပါပုံတွင်တွေ့မြင်သကဲ့သို့, ကြော်ငြာ generalized နည်းလမ်းကိုမျှမကြီးတွေသဘောတူညီချက်ဖြစ်ပါသည်။ ယင်းထောင့်ကွင်းခတ်ထားသူတို့ကိုအမျိုးအစား parameters များကိုသတ်မှတ်မယ့်နည်းလမ်း၏ပြန်လာအမျိုးအစားမတိုင်မီလုံလောက်ပေ။

အရာအားလုံးလုပ်ငန်းခွင်မှအလားတူအမှုကိုပြုလျှင်:

သူကမျှမပြန်လာတန်ဖိုးကိုရှိပါတယ်ဘာဖြစ်လို့လဲဆိုတော့ဤကိစ္စတွင်အတွက်ထောင့်ကွင်း, အဒီဇိုင်နာများ၏နာမတော်ရှေ့၌ထားလေ၏။ နှစ်ဦးစလုံးအစီအစဉ်များ၏ရလဒ်ဖြစ်လိမ့်မည်:

integer

ကြိုး

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 my.delachieve.com. Theme powered by WordPress.