English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在此示例中,我们将学习访问Java中类的私有方法和属性。
要理解此示例,您应该了解以下Java编程主题:
class Test { //私有变量 private int age; private String name; // 初始化 age public void setAge(int age) { this.age = age; } // 初始化 name public void setName(String name) { this.name = name; } // 访问 age public int getAge() { return this.age; } //الوصول إلى name public String getName() { return this.name; } } class Main { public static void main(String[] args) { //创建一个Test对象 Test test = new Test(); //تعيين قيمة المتغير الخاص test.setAge(24); test.setName("w3codebox"); //الحصول على قيمة المتغير الخاص System.out.println("العمر: " + test.getAge()); System.out.println("الاسم: " + test.getName()); } }
نتائج ال输岀
العمر: 24 الاسم: w3codebox
في المثال السابق، لدينا متغيرات خاصة تسمى age و name. هنا، نحاول الوصول إلى المتغيرات الخاصة من فئة أخرى تسمى Main.
لقد استخدمنا طرق الحصول والتعيين لاستدعاء المتغيرات الخاصة. هنا،
طريقة تعيين - "setAge()" و "setName()" تعيين المتغيرات الخاصة
طريقة الحصول - "getAge()" و "getName()" تعود قيم المتغيرات الخاصة
import java.lang.reflect.*; class Test { //私有变量 private String name; //私有方法 private void display() { System.out.println("الاسم هو: " + name); } } class Main { public static void main(String[] args) { try { //创建一个Test对象 Test test = new Test(); //创建名为 obj 的对象 Class obj = test.getClass(); //访问私有变量 Field field = obj.getDeclaredField("name"); //使私有字段可访问 field.setAccessible(true); //设置字段的值 field.set(test, "w3codebox"); //获取字段的值 //并将其转换为字符串 String value = (String)field.get(test); System.out.println("اسم: " + value); //访问私有方法 Method[] methods = obj.getDeclaredMethods(); System.out.println("اسم المетод: " + methods[0].getName()); int modifier = methods[0].getModifiers(); System.out.println("معدل الوصول: " + Modifier.toString(modifier)); } catch(Exception e) { e.printStackTrace(); } } }
نتائج ال输岀
الاسم: w3codebox اسم المетод: display معدل الوصول: private
في هذا المثال، لدينا حقل خاص بعنوان name ومетод خاص بعنوان display(). هنا، نستخدم الاستبصار لاستدعاء الحقول والمتغيرات الخاصة للفئة Test.
للتعرف على الاستبصار، يرجى زيارةJava Reflection (الاستبصار).