ኮምፒውተሮችፕሮግራም

ጃቫ Generics: መግለጫ እና ዘዴዎች

የጃቫ ቋንቋ መልክ ጀምሮ ጥርጥር ያለው ተግባር ውስጥ አዎንታዊ አፍታዎች ያወጡህ ለውጦች, ብዙ አድርጓል. እነዚህ ጉልህ ለውጦች አንዱ ጃቫ ሁሉን አቀፍ ወይም ጠቅለል ማስተዋወቅ ነው. ይህ ተግባር ብቻ ቋንቋ ይበልጥ ፈታ እና ሁለገብ, ነገር ግን ደግሞ የውሂብ አይነቶችን በማምጣት አኳያ እጅግ ደህንነቱ የተጠበቀ እንዲሆን አይደለም.

እውነታው ጃቫ ሁሉን አቀፍ ኮድ ውስጥ generics ያለውን መግቢያ በፊት አይነት ማጣቀሻ በዕቃ አንፃር ብቻ ሳይሆን, ሊፈጠር እንደሚችል ነው. እንዲህ አገናኞች ማንኛውም ነገር ይመደባሉ ይችላሉ. ሁሉ በኋላ, ጃቫ ውስጥ ክፍሎችን ስውር የነገር መደብ ወራሾች ናቸው. ሆኖም ግን, ይህ አቀራረብ ዒላማ አይነት ወደ በዕቃ አንድ ነገር መስለው መታየታቸው ልወጣ ውስጥ የደህንነት አይነቶች ጋር የተያያዙ በርካታ ስህተቶች የሆነ እምቅ ምንጭ ነው. ጠቅለል በመጠቀም ጊዜ ሁሉ Casts ስህተቶች እንኳ እምቅ በማጥፋት, በተዘዋዋሪ በራስ-ሰር ፈጽሟል ናቸው.

ጃቫ Generics: መግለጫ እና ምሳሌ

ከታች ያለውን አኃዝ ውስጥ መደበኛ ክፍሎች ወደ ከምትታየው ያለውን ማመልከቻ አንድ ቀላል ምሳሌ እንመልከት. ከዚያም ሁሉ መንጥሮ እና Java ሁሉን አቀፍ የድምፁን ዝርዝር ምርመራ ይቀጥሉ.

በክፍሉ መግለጫ አጣምር የሚከሰተው ውስጥ መንገድ ላይ ትኩረት ስጥ. ወዲያውኑ ለክፍሉ ስም በኋላ, ደብዳቤውን ቲ አመልክተዋል ይህም ክፍት አንግል ቅንፍ, ይህ የአንድ የተወሰነ አይነት ይተካል የዚህ ክፍል አንድ ለምሳሌ በመፍጠር ሂደት ላይ ነው መሙያ አንድ ዓይነት ነው. እንደሚከተለው ይመስላል: አጣምር <ኢንቲጀር> obj = አዲስ አጣምር <ኢንቲጀር> (). ከዚህ ይልቅ ቲ ቲ, V ወይም ሠ መጠቀም, ደንብ ሆኖ, ማንኛውም ደብዳቤ መጥቀስ, ነገር ግን እንደሚችል መታወቅ አለበት

ማስታወሻ: ባዶ ሊተው አይችልም ግንበኛ ውስጥ ማጣቀሻ አንግል ቅንፍ እያወጀ ጊዜ ዒላማው ዓይነት የሚገልጽ, የ Java ስምንተኛ ስሪት ጋር ጀምሮ. ለምሳሌ ከላይ እንደ ጽፈንዋል ይቻላል ስለዚህ: አጣምር <ኢንቲጀር> obj = አዲስ አጣምር <> ().

ክፍል መስኮች, አገናኞችን, እናንተ ይህን ደብዳቤ መጠቀም ይችላሉ ዘዴዎች የተመለሱ የነገሮች የተወሰኑ ዓይነቶች ይልቅ ሰውነቱ ውስጥ ከዚያም እንዲህ ያለ መንገድ ተናግሯል ጊዜ. ቲ ጀምሮ ለክፍሉ ነገር በዚህ ጉዳይ ላይ የመጀመሪያ እና ሁለተኛ መስኮች ዓይነት ኢንቲጀር መካከል ይሆናል በአንድ የተወሰነ አይነት, ተተክቷል በመፍጠር ጊዜ.

እሴቶች እና firstItem secondItem ያለውን ሎጂክ ተከትሎ, ደግሞ አይነት ኢንቲጀር ወይም subclass መሆን አለበት አግባብ ግንበኛ ጠቅሷል. አንድ ነገር በመፍጠር ጊዜ ተጠቅሶ ነበር ነገር የተለየ ነው የውሂብ አይነት ለማስተላለፍ መሞከር ከሆነ, አጠናቃሪ ይህን ስህተት አይፈቅድም. በመሆኑም, አንድ ነገር ሆኖ ይሆናል ጊዜ ጭቅጭቅ ግንበኛ እንደሚከተለው አጣምር <ኢንቲጀር> obj = አዲስ አጣምር <> (አዲስ ኢንቲጀር (1), አዲስ ኢንቲጀር (2)). ተመሳሳይ እሴቶች እና ዘዴዎች setFirst setSecond ይመለከታል. አንተም ምናልባት, ዘዴዎች getFirst getSecond ቢገመት ተመልክተናል እና አይነት ኢንቲጀር አንድ እሴት ይመለሳል ሆነው.

የተለያዩ መለኪያዎች ክፍል አይነቶች ጋር አጠቃላይ

አጠቃላይ ክፍሎች ውስጥ ደግሞ ኮማ ጋር አንግል ቅንፍ ውስጥ የተዋቀሩ ዓይነት በርካታ ልኬቶችን ማወጅ ይችላሉ. አጣምር ክፍል ከዚህ በታች ነው የቀረበው ጉዳይ በ የተነደፈ.

እርስዎ ማየት እንደ አንግል ቅንፍ ውስጥ ይህ ክፍል አንድ ለምሳሌ ሲፈጥሩ, ግቤቶች እንደ ዓይነቶች ተመሳሳይ ቁጥር የሚጠቁም አለበት. አንድ ካርታ እንደ የውሂብ መዋቅር የዚህ አይነት የሚያውቁት ከሆነ, እናንተ በትክክል ተመሳሳይ መርህ የሚጠቀም መሆኑን ማየት እንችላለን. ዋጋ ዓይነት - በዚያ, የመጀመሪያው ሙግት ቁልፍ አይነት ሲሆን ሁለተኛው ይገልጻል. ይህም የሚተላለፉ ዓይነቶች አንድ ነገር ጭቅጭቅ መደራረብ ይችላሉ ጊዜ መሆኑ መታወቅ አለበት. ለምሳሌ ያህል, የሚከተለውን ማስታወቂያ አጣምር ክፍል ለምሳሌ ፍጹም ትክክል ነው: አጣምር <ሕብረቁምፊ, ሕብረቁምፊ> obj.

ጠቅለል አንዳንድ ባህሪያት

ተጨማሪ በመሄድ በፊት የ Java አጠናቃሪ የክፍል አጣምር በተለያየ ስሪት ለመፍጠር እንዳልሆነ መታወቅ አለበት. እንዲያውም, አንድ አጠቃላይ ዓይነት ሁሉንም መረጃ ማጠናቀር ሂደት ውስጥ ይሰረዛል. በምትኩ, አጣምር ክፍል የሆነ ልዩ ስሪት መፍጠር, አግባብ ዓይነቶችን ያመጣሉ. ይሁን እንጂ, በፕሮግራሙ ውስጥ አሁንም ያለውን ክፍል ብቻ ሁሉን አቀፍ ስሪት አለ. ይህ ሂደት ጃቫ ሁሉን አቀፍ የጽዳት አይነት ውስጥ ይባላል.

አንድ አስፈላጊ ነጥብ ልብ በል. ተመሳሳይ የጃቫ ሁሉን አቀፍ ክፍል የተለያዩ ስሪቶች አገናኞች አንድ እና ተመሳሳይ ነገር ማመልከት አይችሉም. አጣምር <ኢንቲጀር> obj1 እና መንታ <ድርብ> obj2: ይህም, እኛም ሁለት አገናኞች አለን እንበል ነው. በመሆኑም, መስመር ውስጥ obj1 = obj2 ስህተት. ሁለቱም ተለዋዋጮች አጣምር ዓይነት ናቸው ቢሆንም, የ ነገሮች ይህም እነርሱ ለማመልከት, የተለያዩ ናቸው. ይህ ጃቫ ሁሉን አቀፍ ውስጥ ዋስትና አይነቶች አንድ ዋነኛ ምሳሌ ነው.

ሁሉን አቀፍ ክፍሎች ላይ ያሉ ገደቦች

ይህም ጠቅለል አይነቶች ማጣቀስ ብቻ ተግባራዊ ሊሆን እንደሚችል ማወቅ አስፈላጊ ነው, ይህ ግቤቶች የክፍል አይነት መሆን አለበት ሁሉን አቀፍ ክፍል በጃቫ ክርክር ማለፍ ነው. ድርብ ወይም ረጅም ያሉ ለምሳሌ, እንደ እነዚህ ቀላል አይነቶች,,, ሊተላለፉ አይችሉም. በሌላ አነጋገር, የሚከተለው መስመር አጣምር ክፍል መግለጫ አይፈቀድም: አጣምር obj. ለእያንዳንዱ ኋላቀር ዓይነት ተመጣጣኝ ጃቫን መጠቅለያ መደብ አለ ሆኖ ግን, ይህ ገደብ, አንድ ከባድ ችግር አይደለም. በጥብቅ ሲናገሩ, የ ክፍል አጣምር አንተ ኢንቲጀር እና ቡሊያን እሴት avtoupakovka ሁሉ ስለ እናንተ ነው encapsulate የሚፈልጉ ከሆነ: አጣምር <ኢንቲጀር, ቡሊያን> obj = አዲስ አጣምር <> (25, እውነት).

ሌላው ከባድ ችግር ደግሞ መመጠኛ ዓይነት አንድ ለምሳሌ ለመፍጠር አለመቻላቸው ነው. ለምሳሌ ያህል, የሚከተለውን መስመር አንድ ማጠናቀር ስህተት ያስከትላል: T መጀመሪያ = አዲስ T (). ክርክር ሙሉ ክፍል ወይም ረቂቅ, ወይም እንዲያውም በይነገጽ አልፈዋል እንደሆነ በቅድሚያ ማወቅ አይደለም; ምክንያቱም ይህ ግልጽ ነው. ተመሳሳይ ድርድሮች ለመፍጠር ይሄዳል.

ውስን አይነቶች

ይህ ሁሉን አቀፍ ክፍል Java አንድ እንደ ነጋሪ እሴት አልፏል የሚችሉ ዓይነቶች ዝርዝር ለመገደብ አስፈላጊ በሚሆንበት ጊዜ በጣም ብዙ ጊዜ ሁኔታዎች አሉ. የእኛን ክፍል አጣምር ውስጥ እኛ በእነርሱ ላይ ተጨማሪ የሂሳብ ክወናዎች ብቻ የቁጥር እሴቶች encapsulate እንደሚፈልጉ እንገምት. ይህንን ለማድረግ እኛ መመጠኛ ዓይነት የላይኛው ገደብ መግለጽ ይኖርብናል. ይህ አንግል ቅንፍ ውስጥ አልፈዋል ሁሉ እሴቶች ከወረሱት አንድ superclass ማስታወቂያዎች አማካኝነት ተገነዘብኩ ነው. እንደሚከተለው እንዲህ ይመስላል: ክፍል አጣምር . በዚህ መንገድ, ወደ አጠናቃሪ የሚያገኝ መሆኑን ግቤት T ቀየሩት ወይም ቁጥር ክፍል ወይም ከተወሰኑት አንዱ ሊሆን ይችላል ይልቅ.

ይህ የተለመደ መቀበያ ነው. እንዲህ ገደቦች ብዙውን ጊዜ አንድ እና ተመሳሳይ ክፍል ውስጥ ተኳሃኝነት አይነት ልኬቶችን ለመስጠት ጥቅም ላይ ይውላሉ. የእኛ ክፍል አጣምር ውስጥ ምሳሌ እንመልከት: ክፍል አጣምር . እዚህ ጋር እኛ ዓይነት T የዘፈቀደ ሊሆን ይችላል በሚል አጠናቃሪ መንገር, እና V አይነት T አይነት ወይም ከተወሰኑት አንዱ ወይ መሆን አለበት.

የ "ከታች" መገደብ በትክክል በተመሳሳይ መንገድ ነው, ግን ይልቁንስ ቃል ቃል እጅግ በጣም ፊደል የሚያቅፍ ነው. ይህ ይካተታሉ ክፍል አጣምር ይልቅ T አንድ ArrayList, ወይም የወረሰ ማንኛውም ክፍል ወይም በይነገጽ ወይም መተካት ሊሆን እንደሚችል ይናገራል.

የፈለቀ ጃቫ ዘዴዎች እና constructors

የጃቫ ውስጥ, ጠቅለል ደግሞ ዘዴዎች ብቻ ክፍሎች ላይ ሳይሆን ተግባራዊ እንጂ ይችላል. ለምሳሌ ያህል, አንድ ሁሉን አቀፍ ዘዴ መደበኛ በክፍል ውስጥ አውጇል ይቻላል.

ከላይ በስእል ውስጥ እንደተመለከትነው, ማስታወቂያው አጠቃላይ ስልት ምንም ትልቅ ነገር ነው. አንድ ዘዴ መመለስ አይነት አንግል ቅንፍ ማስቀመጥ እና በእነርሱ ውስጥ ያለውን ዓይነት ልኬቶችን እንዲገልጹ በፊት በቂ.

ሁሉም ነገር ወደ ግንበኛ ላይ ተመሳሳይ ነገር ነው ከሆነ:

በዚህ ሁኔታ ውስጥ አንግል ቅንፎች እሱ ምንም ተመላሽ ዋጋ የለውም; ምክንያቱም ወደ አውጪ ስም ፊት አኖረው. ሁለቱም ፕሮግራሞች ውጤት ይሆናል:

ኢንቲጀር

ክር

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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