روش جاوا toString
toString
روش در جاوا برای ارائه اطلاعات واضح و کافی در مورد یک شی ( Object
) به شکل قابل خواندن توسط انسان استفاده می شود. نادیده گرفتن روش مناسب toString
می تواند با ارائه اطلاعات ارزشمند و مهم به ورود و اشکال زدایی یک برنامه جاوا کمک کند. از آنجایی که toString()
در یک کلاس تعریف شده است java.lang.Object
و اجرای پیشفرض آن اطلاعات زیادی را ارائه نمیکند، همیشه بهترین کار این است که این روش را در یک کلاس فرعی لغو کنیم. در واقع، اگر یک کلاس مهم یا کلی از نوع ایجاد می کنید Order
، Trade
یا Employee
، همیشه برابر است ، hashCode ، compareTo و toString
متدها در جاوا. به طور پیش فرض پیاده سازی toString
خروجی را به شکل تولید می کند ، package.class@hashCode
به عنوان مثال برای مثال ما متد کلاس تست را چاپ می کند.Country@18e2b22 که در آن 18e2b22 کد هش شی به صورت هگزادسیمال است، اگر متد hashCode را فراخوانی کنید، 260943370 را برمی گرداند. معادل اعشاری 18e2b22. این اطلاعات به ویژه هنگام جستجوی یک مشکل مفید نیستند. بیایید به یک مثال واقعی نگاه کنیم که در آن باید مشکلی را در اتصال شبکه خود پیدا کنید، در صورتی که می خواهید بدانید سیستم شما می خواهد به کدام هاست و پورت متصل شود و اگر اطلاعات پیش فرض را چاپ می کند یا فقط آن را چاپ می کند. تصور مشکل واقعی غیرممکن است، اما با یک پیاده سازی لغو شده می توانند اطلاعات مفیدی مانند نام میزبان و شماره پورت را ارائه دهند. در این آموزش جاوا نکاتی در مورد جایگزینی روش با مثال کد ارائه می دهیم. toString()
toString()
Country
Socket
ServerSocket
toString
toString
toString
نحوه نادیده گرفتن متد toString در جاوا:
تاریخ قالب بندی شده (یعنی روز/ماه/سال) را به جای مقدار خام چاپ می کند. این یک راهنمایی بسیار مفید در هنگام نادیده گرفتن روش جاوا استtoString
. toString()
کلاس معمولی java.util.Date
تاریخ فرمت شده را خروجی نمی دهد و شامل جزئیات زیادی است که همیشه مورد نیاز نیستند. اگر از DateFormat جزئی استفاده می کنید . dd-MM-yy در برنامه خود، پس قطعاً می خواهید این قالب را به جای فرمت پیش فرض ببینید. IDE معمولاً خروجی فرمت شده تولید نمی کند Date
و این کاری است که باید خودتان انجام دهید، اما ارزشش را دارد. نحوه چاپ تاریخ را با فرمت ddMMyy در جاوا برای جزئیات بیشتر در مورد قالب بندی در جاوا بخوانید Date
. همچنین می توانید از کلاس SimpleDataFormat یا کتابخانه زمان Joda Date برای این کار استفاده کنید.
مستندسازی فرمت toString
اگر روش شماtoString()
دادهها را بهعنوان فیلد=مقدار خروجی نمیدهد، ایده خوبی است که فرمت خروجی را مستند کنید toString
، بهویژه برای اشیاء مهم مانند Employee یا Student. به عنوان مثال، اگر یک متد toString()
کلاس Работник(Employee)
" John-101-Sales-9846387321 " را چاپ کند، یک روش خوب این است که قالب را به عنوان "name-id-department-contact" مشخص کنید، اما در عین حال به مشتری اجازه دریافت اطلاعات از متد toString()
، همیشه باید روشهای مناسبی را برای بازیابی دادهها ارائه کنید، مانند getName()
، و غیره، زیرا اطلاعات بهدستآمده از getId()
نمایش یک شی شکننده و مستعد خطا هستند، بنابراین مشتری باید همیشه یک مسیر تمیز برای به دست آوردن اطلاعات داشته باشد. getContact()
toString()
از StringBuilder برای نوشتن خروجی toString() استفاده کنید
toString()
اگر برای یک متد در جاوا کد می نویسید ، از StringBuilder برای افزودن ویژگی های فردی استفاده کنید. اگر از یک IDE مانند Eclipse ، Netbeans یا IntelliJ استفاده می کنید ، استفاده StringBuilder
از متد و append()
به جای عملگر + برای نوشتن toString
نیز راه حلی است. به طور پیش فرض، هر دو Eclipse و Netbeans toString
با عملگر الحاق تولید می کنند.
با استفاده از حاشیه نویسی @Override
استفاده از@Override
روش overriding در جاوا یکی از بهترین روش ها در این زبان است. اما این اشاره به آن اندازه که در مورد نادیده گرفتن روشهای equals()
و مهم است، مهم نیست compareTo()
، زیرا بارگذاری بیش از حد به جای نادیده گرفتن میتواند خطاهای ظریفتری ایجاد کند که محاسبه آنها دشوار است. در هر صورت بهتر است از حاشیه نویسی استفاده کنید @Overrride
.
چاپ محتویات یک آرایه به جای چاپ شیء آرایه
آرایه یک شی در جاوا است اما روشی را باطل نمیکندtoString
و وقتی یک آرایه را چاپ میکنید، فرمت خروجی پیشفرض چندان مفید نیست زیرا ما میخواهیم محتویات آرایه را ببینیم. به هر حال، این دلیل دیگری است که چرا آرایه char[] به String برای ذخیره داده های حساس مانند رمز عبور ترجیح داده می شود. برای بررسی اینکه آیا چاپ محتویات یک آرایه به مشتریان شما کمک می کند یا خیر، وقت بگذارید و اگر منطقی است، محتویات آرایه را به جای خود شی چاپ کنید. به دلایل عملکرد، ترجیح داده می شود Collection
از چنین ArrayList
یا HashSet به جای Array
ذخیره اشیاء دیگر استفاده شود.
نکات پاداش
چند نکته پاداش بیشتر در مورد نادیده گرفتن روشtoString
در جاوا.
-
خروجی چاپ
toString
در چند خط یا در یک خط بر اساس طول آن. -
toString
به عبارت دیگرpackage.class
برای جلوگیری از هرگونه سوء تفاهم ، نام کلاسهای کاملاً واجد شرایط را در نمایش وارد کنید . -
شما می توانید مقادیر null را رد کنید یا آنها را نشان دهید، اما بهتر است آنها را نشان دهید. گاهی اوقات آنها مفید هستند زیرا نشان می دهند که کدام فیلد در طول یک حادثه وجود دارد
null
، برای مثال NullPointerException . -
از یک قالب کلید-مقدار استفاده کنید، برای مثال
member.name=member.value
، اکثر IDE ها این را پشتیبانی می کنند. -
در صورتی که فکر می کنید باید اطلاعات لازم را در اختیار کلاس ارث بری قرار دهند، اعضای ارثی را نیز شامل کنید.
-
گاهی اوقات یک شی حاوی بسیاری از پارامترهای اختیاری و مورد نیاز است، همانطور که در مثال الگوی Builder خود نشان دادیم ، زمانی که چاپ همه فیلدها تقریبا غیرممکن است، در این حالت فقط میتوانیم فیلدهای مورد نیاز را چاپ کنیم، به خصوص که فیلدهای اختیاری داریم.
GO TO FULL VERSION