JavaRush /وبلاگ جاوا /Random-FA /10 نکته برای نادیده گرفتن متد toString() در جاوا (قسمت 1)...
Ku6ep
مرحله

10 نکته برای نادیده گرفتن متد toString() در جاوا (قسمت 1)

در گروه منتشر شد
10 نکته برای نادیده گرفتن متد toString() در جاوا - ToStringBuilder Netbeans Eclipse 10 نکته برای نادیده گرفتن متد toString() در جاوا (قسمت 1) - 1

روش جاوا 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()CountrySocketServerSockettoStringtoStringtoString

نحوه نادیده گرفتن متد 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در جاوا.
  1. خروجی چاپ toStringدر چند خط یا در یک خط بر اساس طول آن.

  2. toStringبه عبارت دیگر package.classبرای جلوگیری از هرگونه سوء تفاهم ، نام کلاس‌های کاملاً واجد شرایط را در نمایش وارد کنید .

  3. شما می توانید مقادیر null را رد کنید یا آنها را نشان دهید، اما بهتر است آنها را نشان دهید. گاهی اوقات آنها مفید هستند زیرا نشان می دهند که کدام فیلد در طول یک حادثه وجود دارد null، برای مثال NullPointerException .

  4. از یک قالب کلید-مقدار استفاده کنید، برای مثال member.name=member.value، اکثر IDE ها این را پشتیبانی می کنند.

  5. در صورتی که فکر می کنید باید اطلاعات لازم را در اختیار کلاس ارث بری قرار دهند، اعضای ارثی را نیز شامل کنید.

  6. گاهی اوقات یک شی حاوی بسیاری از پارامترهای اختیاری و مورد نیاز است، همانطور که در مثال الگوی Builder خود نشان دادیم ، زمانی که چاپ همه فیلدها تقریبا غیرممکن است، در این حالت فقط می‌توانیم فیلدهای مورد نیاز را چاپ کنیم، به خصوص که فیلدهای اختیاری داریم.

نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION