از کجا پیاده‌سازی متد‌ها در جاوا را پیدا کنیم؟

+1 رأی
میانگین بازدید روزانه 0.7387 بازدید

سلام. من قصد دارم پیاده سازی متد‌ها در جاوا رو ببینم. به عنوان مثال متد size که در اینترفیس List تعریف شده. من به عنوان مثال کلاس ArrayList که یکی از پیاده سازی‌های اینترفیس List است و نگاه کردم. اما هیچ پیاده سازی‌ای پیدا نکردم. مثلا تکه کد زیر و پیدا کردم:

    public int size() {
        return size;
    }

اما می‌خوام بدونم که size چطور اندازه‌ی لیست و بدست میاره که خب در متد بالا مشخص نیست.

سوال 3 ماه قبل در تالار برنامه نویسی توسط deuxshiri (12 امتیاز)

1 جواب

+3 رأی

مقدار size توی متدهایی مثل  add,remove,addall و ... ست میشه.

دوتا از فیلدهای کلاس

  private transient Object[] elementData;

 private int size;

و اولین بار مقداره size داخل یکی از سازنده ها ست میشه

     public ArrayList(Collection<? extends E> c) {
        elementData = c.toArray();
        size = elementData.length;
        // c.toArray might (incorrectly) not return Object[] (see 6260652)
        if (elementData.getClass() != Object[].class)
            elementData = Arrays.copyOf(elementData, size, Object[].class);
    }
جواب 3 ماه قبل توسط HA (129 امتیاز)
ویرایش 3 ماه قبل توسط Saeed Zarinfam
امکانش هست مثلا پیاده‌سازی length و هم بگین کجاست؟
ArrayList بصورت درونی از آرایه استفاده میکنه.
length یه field برای اشیائی از نوع آرایه است. که در واقع طول آرایه رو درون خودش داره. و متد نیست که پیاده سازی داشته باشه. این مقدار همیشه باید موقع ایجاد آرایه مشخص بشه و نمی تونه تغییر کنه. در واقع public final هست.
int[ ]  a = new int[5]  // for example
از اینجاس که مقدار ۵ به length نسبت داده میشه. و قابل تغییر هم نیست.

نوع آرایه یه نوع خاصه .مثلا شما نمی تونید فیلد length رو به این شکل
  Field field = args.getClass().getField("length");     //Returns a Field object that reflects the specified public System.out.println(field.get(args));    // getting the value of the field
بدست بیارید چون اصلا همچین فیلدی رو نمیشناسه و همون خط اول Exception میده.در واقع یک فیلد معمولی نیست!!
برای اطلاعات بیشتر میتونید به specification زبان جاوا مراجعه کنید و اینکه پیاده سازی های مختلف java کجای حافظه این مقدار رو ذخیره میکنن.

سوال های مشابه

+1 رأی
2 جواب میانگین بازدید روزانه 0.46119 بازدید
+1 رأی
2 جواب میانگین بازدید روزانه 0.21122 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.11134 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.0986 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.13167 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.06102 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.5661 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.65358 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.83465 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.0859 بازدید
کانال تلگرام جواب یاب
...