Java-program til at få adgang til private medlemmer af en klasse

I dette eksempel lærer vi at få adgang til de private metoder og felter i en klasse i Java.

For at forstå dette eksempel skal du have kendskab til følgende Java-programmeringsemner:

  • Java-metoder
  • Java Access Modifiers

Eksempel 1: Få adgang til private felter ved hjælp af getter- og settermetoder

 class Test ( // private variables private int age; private String name; // initialize age public void setAge(int age) ( this.age = age; ) // initialize name public void setName(String name) ( this.name = name; ) // access age public int getAge() ( return this.age; ) // access name public String getName() ( return this.name; ) ) class Main ( public static void main(String() args) ( // create an object of Test Test test = new Test(); // set value of private variables test.setAge(24); test.setName("Programiz"); // get value of private variables System.out.println("Age: " + test.getAge()); System.out.println("Name: " + test.getName()); ) )

Produktion

 Alder: 24 Navn: Programiz

I ovenstående eksempel har vi private variabler, der hedder alder og navn. Her forsøger vi at få adgang til de private variabler fra en anden klasse ved navn Main.

Vi har brugt getter- og setter-metoden til at få adgang til de private variabler. Her,

  • settermetoderne setAge()og setName()initialiserer de private variabler
  • getter-metoderne getAge()og getName()returnerer værdien af ​​private variabler

Eksempel 2: Få adgang til det private felt og metoden ved hjælp af Reflection

 import java.lang.reflect.*; class Test ( // private variables private String name; // private method private void display() ( System.out.println("The name is " + name); ) ) class Main ( public static void main(String() args) ( try ( // create an object of Test Test test = new Test(); // create an object of the class named Class Class obj = test.getClass(); // access the private variable Field field = obj.getDeclaredField("name"); // make private field accessible field.setAccessible(true); // set value of field field.set(test, "Programiz"); // get value of field // and convert it in string String value = (String)field.get(test); System.out.println("Name: " + value); // access the private method Method() methods = obj.getDeclaredMethods(); System.out.println("Method Name: " + methods(0).getName()); int modifier = methods(0).getModifiers(); System.out.println("Access Modifier: " + Modifier.toString(modifier)); ) catch(Exception e) ( e.printStackTrace(); ) ) )

Produktion

 Navn: Programiz Metode Navn: display Access Modifier: privat

I dette eksempel har vi et privat felt med navnet navn og en privat metode med navnet display(). Her bruger vi refleksionen til at få adgang til de private felter og metoder i klassetesten.

For at lære mere om refleksion, besøg Java Reflection.

Interessante artikler...