PDA

View Full Version : سوال: مفهوم و عملکرد casting ؟



mahsa_ahn
جمعه 04 تیر 1389, 23:12 عصر
سلام بچه ها...کسی میتونه این جمله رو کلمه به کلمه بران تحلیل کنه بگه کلا چی می خواد؟؟؟؟ گیج شدم....(این جمله توی یه پروژه بوده...)


int memeberId = ((Integer) jTable2.getValueAt(memeberSelectedRow, 0))
.intValue();
میدونم که این casting هست...ولی بازم نمیفهمم (اصلا با خود casting مشکل دارم...:لبخند:)

مهران موسوی
شنبه 05 تیر 1389, 01:57 صبح
این کد مقدار row انتخاب شده در جدول jTable2 رو تبدیل به int کرده و در متغییر memeberId قرار میده ...

mahsa_ahn
شنبه 05 تیر 1389, 02:57 صبح
این کد مقدار row انتخاب شده در جدول jTable2 رو تبدیل به int کرده و در متغییر memeberId قرار میده ...
مرسی...ولی دقیقا کار این integer توی پرانتز چیه؟؟؟؟
کلا فرم کلی چنین عبارت هایی رو میشه توضیح بدید که چی کار میکنن؟

behrooj
شنبه 05 تیر 1389, 12:21 عصر
توی زبان‌های شی‌گرا، تکنیک Casting به برنامه‌نویس کمک می‌کنه که
در حالی که کد‌ها به صورت عمومی (و نه بر اساس یک نوع خاص) نوشته شوند
و این وظیفه استفاده‌کننده‌ی کد هست که نوع‌گذاری رو تعیین کنه.

به طور مثال در مورد همین مساله؛
متد getValueAt در JTable به شکل زیر تعریف شده:

Object getValueAt(int row, int column)حالا میشه فرض کرد که این متد فقط برای Integer تعریف شده‌‌بود:

Integer getValueAt(int row, int column)خوب مشکل یواش یواش شروع میشه؛ چون کس دیگه‌ای ممکنه که JTableی داشته باشه که از مقدار String تو هر خونه‌اش استفاده می‌کنه، پس JTable دوباره باید متد getValueAtی ارائه بده که مقدار برگشتیش String باشه و به همین ترتیب.....
حالا JTable چه‌طور این مشکل رو حل کرده؟ این طور که متد getValueAt رو به کلی‌ترین حالت ممکن نوشته و این وظیفه‌ی برنامه‌نویس که بدونه در خونه‌های JTable چی قرار می‌ده؛ حالا شما که داری از Integer استفاده می‌کنی، پس باید مقدار برگشتی رو به Integer اصطلاحا cast کنی.

توی جاوا دو جور Casting مطرح هست:


Down-cast: در واقع همیشه ما با این نوع سر و کار داریم چرا که مثلا مقدار برگشتی متد getValueAt که یه Object هست رو می‌خواهیم به یه نوع خاص‌تر مثل Integer تبدیل کنیم.
Up-Cast: نوعی از Casting هست که همیشه به طور اتوماتیک انجام می‌شه. به طور مثال اگر متدی پارامتر ورودی از Object بخواد و شما پارامتری از نوع String ارسال کنید، مثالی از Up-Cast هست چون هر Stringی یه نمونه Object هم هست.


برای مطالعه‌ی بیشتر:
http://www.javabeginner.com/learn-java/java-object-typecasting
http://java.sun.com/docs/books/jls/third_edition/html/conversions.html