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

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

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

    public int size() {
        return size;
    }

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

سوال 5 ماه قبل در تالار برنامه نویسی توسط 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);
    }
جواب 5 ماه قبل توسط HA (129 امتیاز)
ویرایش 4 ماه قبل توسط 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.42124 بازدید
+1 رأی
2 جواب میانگین بازدید روزانه 0.2125 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.11137 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.0990 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.13169 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.06102 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.4362 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.65379 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.79473 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.0859 بازدید
کانال تلگرام جواب یاب
...