دانستنی‌ها

ویژگی‌های مخفی زبان جاوا

حقه‌ها یا ویژگی‌های مخفی در هر محصول نرم‌افزاری بسیار جذاب هستند. اما آیا چنین حقه‌هایی در زبان برنامه‌نویسی جاوا نیز وجود دارد؟

توسعه‌دهندگان زبان جاوا در زمان کار خود با این زبان برنامه‌نویسی احتمالا با حقه‌هایی روبرو شده‌اند که برایشان جذاب بوده است. در ادامه چند مورد آن را اشاره می‌کنیم:

۱. مقداردهی اولیه با زوج آکولادها: به عنوان مثال مقدار دهی به شکل زیر را داریم:

با استفاده از زوج آکولادها به شکل زیر می‌توانیم کدنویسی انجام دهیم:

یا

۲. ThreadLocals: معمولا خیلی به عنوان یک راه برای ذخیره حالت هر ریسه شناخته نمی‌شوند.

طبق توضیح جواب‌یاب، Thread Local در حقیقت شبیه یک scope است (مانند request scope یا session scope) و می توان به آن thread scope گفت. اشیائی که از کلاس ThreadLocal ساخته می شوند مانند یک map عمل می کنند و قابلیت ذخیره سازی هر شئی را برای هر thread دارند، کلاس ThreadLocal را می توان شبیه یک map تصور کرد که کلید آن یک thread و مقادیر آن اشیاء می باشد.

۳. Join Union  در نوع پارامترها

برای مثال اگر بخواهیم یک پارامتر هم Comparable باشد و هم یک Collection، به شکل زیر خواهیم داشت:

۴. مقدار دهی اولیه نمونه‌ها

به کد زیر دقت کنید:

بعد از اجرای تابع main خروجی به شکل زیر است:

این کار در صورتی که بخواهیم چند constructor داشته باشیم و یک کد مشترک نیاز داشته باشند.

به علاوه یک syntatic sugar برای مقدار دهی اولیه کلاس‌هایتان فراهم می‌کند.

۵. از JDK 1.6_07 به بعد یک برنامه به اسم VisualVM (bin/jvisualvm.exe) داریم که یک GUI زیبا روی بسیاری از ابزارهاست و خیلی کامل‌تر از JConsole به نظر می‌رسد.

۶. برای بسیاری از افراد بلوک‌های برچسب‌دار در جاوا شگفت آور است. این یک مثال از آن است:

۷. برای استفاده از instanceof بررسی null بودن یا نبودن ضرورتی ندارد به جای استفاده از :

تنها کد زیر را استفاده کنید:

۸. امکان استفاده از توابع و constructorها در enum برای بسیاری از افراد باعث شگفتی است. برای مثال:

مستندات بیشتر در اینجا قابل مشاهده است.

۹. تایپ پارامترها برای توابع به صورت صریح به شکل زیر قابل مشخص کردن است:

Collections.<String, Integer>emptyMap()

۱۰.از جاوا ۱.۵ به بعد، جاوا سینتکس خیلی تمیزی برای نوشتن توابعی از متغیرها با تعداد متفاوت اضافه کرده است. بنابراین به جای پاس دادن آرایه می توان کار زیر را انجام داد:

در اینجا bars به طور اتوماتیک به آرایه با نوع مشخص تبدیل می‌شود و نکته مهم این است که برای فراخوانی تابع می‌توانید به شکل زیر فراخوانی نمایید:

شما چه ویژگی‌های دیگری می‌شناسید که موجب شگفتی‌تان شده اند؟ از ویژگی‌های گفته شده از کدامیک بی‌اطلاع بودید؟

منبع:

http://stackoverflow.com/

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا