تمام سوالات سوالات بدون پاسخ سوال بپرسید

من در قسمتی از برنامه ام (یک برنامه جاوا) احتیاج به استفاده از متدی از کلاس دیگر را دارم که در آن به صورت خصوصی معرفی شده است.(نمونه ملموس این متد ها "سازنده های خصوصی" کلاس هستند)چگونه می توان از این متد خصوصی استفاده کرد؟

1 پاسخ

این کار اصلاْ معمول نیست. چون اگر متد یا داده ای در یک کلاس بصورت خصوصی تعریف شده است، دسترسی دیگر کلاس ها به آن از نظر طراح کلاس باعث بر هم خوردن Abstraction کلاس می شود. به نظر من شما دو راه برای حل این مشکل دارید.

اگر شما طراح کلاس مربوطه هستید و می خواهید متدی تعریف کنید که در کلاس های دیگر در همان Package استفاده شود ولی در خارج از Package قابل دسترس نباشد، بهتر است برای متد مربوطه هیچ modifierی قرار ندهید.

اما اگر قصد استفاده از کتابخانه ای را دارید و دسترسی به کد منبع آن ندارید، می توانید به روش زیر به متد خصوصی دسترسی داشته باشید:

public class MyObject {

      private String aPrivateValue = null;

      public MyObject(String privateString) {
        this.aPrivateValue = privateString;
      }

      private String getAPrivateValue(){
        return this.aPrivateValue;
      }
    }

    public class Main
    {
        public static void main( String[] args )
        {
            MyObject MyObject = new MyObject("The Private Value");

            Method getAPrivateValueMethod = MyObject.class.
                getDeclaredMethod("getAPrivateValue", null);

            getAPrivateValueMethod.setAccessible(true);

            String returnValue = (String)
                getAPrivateValueMethod.invoke(MyObject, null);

            System.out.println("returnValue = " + returnValue);
        }
    }
toggle preview



آموزش زبان برنامه نویسی C#
آموزش jquery
آموزش برنامه نویسی
آموزش طراحی وبسایت
آموزش مدیریت وبسایت
آموزش جاوا Java
آموزش پایتون Python
آموزش سی شارپ C#‎
آموزش HTML و CSS
آموزش JavaScript جاوااسکریپت
آموزش jQuery جی کوئری
آموزش ساخت ربات تلگرام
آموزش برنامه‌نویسی PHP
آموزش برنامه‌نویسی اندروید
● آموزش‌های رایگان

سوالات مرتبط

راهنمای استفاده از ویرایشگر
  • *ایتالیک*‌ یا __ایتالیک__
  • **ضخیم** یا __ضخیم__
  • آدرس:[متن](http://url.com/ "عنوان")
  • عکس?![alt متن](/path/img.jpg "عنوان")
  • لیست عددی: 1. Foo 2. Bar
  • برای رفتن به خط بعد، هر جا مایلید که خط جدید شروع شود دو کاراکتر فاصله (space) قرار دهید
  • تگ‌های ساده HTML هم پشتیبانی می‌شوند

تگها:
  • ×101
  • ×33
  • ×32
  • پرسیده شده: 14 دسامبر '11, 08:07
  • بازدید: 4,520 بار
  • آخرین بروزرسانی: 14 دسامبر '11, 13:16

این سوال را دنبال کنیدتوسط ایمیل: ایمیل شما (باید معتبر باشد, هرگز به دیگران نمایش داده نمیشود):

هنگامی که شما به سیستم وارد شوید،قادر خواهید بود برای بروز رسانی ها مشترک شوید.


توسط RSS:

پاسخها

پاسخها و نظرها