خواندن فیلد با نام فیلد در اندروید حتی فیلدهای غیرقابل دسترس

با استفاده از برنامه نویسی رفلکش (Reflection)، می‌توانید به یک فیلد از طریق نام آن و به صورت String دسترسی داشته باشید! و این کار باعث می‌شود تا بتوانید فیلدهای غیرقابل دسترسی private و protected را نیز از هرجایی که خواستید بخوانید.

روش انجام کار

ابتدا کتابخانه‌ی apache commons lang3 را به پروژه‌ی خود اضافه کنید:

compile 'org.apache.commons:commons-lang3:3.6'

حالا به صورت زیر می‌توان به فیلد دسترسی داشت:

//
Object object = FieldUtils.readField(targetObject, "fieldName", true);
View view = (View) object;
//

ورودی‌های متد readField:

  • ورودی اول: همان آبجکتی است که می‌خواهید فیلد را از آن بخوانید!
  • ورودی دوم: نام فیلد می‌باشد
  • ورودی سوم: تعیین می‌کند که به صورت اجباری این فیلد را بخواند. (پس اگر private و protected باشد نیز خوانده می‌شود)

خروجی متد readField: از نوع Object می‌باشد که می‌توانید با توجه به نوع فیلد، آن را به آبجکت مورد نظرتان Cast (تبدیل) کنید.

پاسخ دهید

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

cp-codfk

نظرات ثبت شده بدون دیدگاه

توضیحات پیشنهادی نظرات اشتراک