编程知识 cdmana.com

Tutoriel Java - reflection, tutoriel de téléchargement mongodb

public void hello(){

System.out.println(“Je viens deStudentDeHello”);

}

}

class Person {

public void hello(){

System.out.println(“Je viens dePersonDeHello”);

}

}

Pour les trois étapes du code ci - dessus,Je vais parler de ma compréhension:

  1. Pour la première étape Accès Class Exemple En fait, choisissez l'une des trois méthodes,Il n'y a pas tant à se disputer

  2. Pour la deuxième étape L'apprentissage arrive Le premier argument est le nom de la méthode,Directement à l'endroit où vous allez appeler Nom:xxxMéthode Les paramètres suivants correspondent au type et au nombre de paramètres à passer par la méthode que vous appelez,C'est réglé. Surcharge de la méthode La question de

  3. Appel à une méthode statique,Il est important de noter que Étape 3,invokeLe premier paramètre de null,Parce que La méthode statique n'appartient à aucune instance,Alors...,Aucune instance n'est requise

  4. Pour Polymorphisme de la méthode Questions Ça correspond aussi à Polymorphisme:L'exécution de cette méthode dépend de l'objet instantané au moment de l'exécution de votre code,Indépendamment du type de variable de référence

En bas,Nous vous donnons chacun un exemple à titre de référence:

Appel pour surcharge de méthode

=========

package test;

import com.sun.prism.impl.Disposer;

import java.lang.reflect.Array;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

import java.lang.reflect.Modifier;

import java.util.Arrays;

public class changeData {

public static void main(String[] args) {

try {

//Première étape,

《Grandes usines de première ligneJavaAnalyse des questions d'entrevue+Notes d'apprentissage pour le développement de l'arrière - plan+La dernière vidéo d'architecture+Document d'information sur le code source du projet en direct》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 Partage open source du contenu complet

AccèsClassExemple ,L'une des trois méthodes

// Student stu = new Student();

// Class stuClass = (Class) stu.getClass();

Class stuClass = Student.class;

//Deuxième étape,Méthode d'obtention ,La méthode à invoquer avec vous Type de paramètre、Nombre de paramètres correspondant à

Method m = stuClass.getMethod(“hello”,String.class);

//Troisième étape,Méthode d'appel

m.invoke(new Student(),“Celui avec un paramètre”);

} catch (Exception e) {

System.out.println(e);

}

}

}

class Student extends Person{

public void hello(){

System.out.println(“Je viens deStudentDeHello”);

}

public void hello(String tag){

System.out.println(“Je viens deStudentDeHello ->” + tag);

}

}

class Person {

public void hello(){

System.out.println(“Je viens dePersonDeHello”);

}

}

Appel à une méthode statique

=========

package test;

import com.sun.prism.impl.Disposer;

import java.lang.reflect.Array;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

import java.lang.reflect.Modifier;

import java.util.Arrays;

public class changeData {

public static void main(String[] args) {

try {

//Première étape,AccèsClassExemple ,L'une des trois méthodes

// Student stu = new Student();

// Class stuClass = (Class) stu.getClass();

Class stuClass = Student.class;

//Deuxième étape,Méthode d'obtention

Method m = stuClass.getMethod(“hello”);

//Troisième étape,Méthode d'appel , Parce que c'est une méthode statique Il n'appartient à aucune instance Donc votre premier paramètre passe null Ça suffit.

m.invoke(null);

} catch (Exception e) {

System.out.println(e);

}

}

}

class Student extends Person{

public static void hello(){

System.out.println(“Je viens deStudentDeHello”);

}

}

class Person {

public static void hello(){

System.out.println(“Je viens dePersonDeHello”);

}

}

Pour Par private Méthode de modification

==================

package test;

import com.sun.prism.impl.Disposer;

import java.lang.reflect.Array;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

import java.lang.reflect.Modifier;

import java.util.Arrays;

public class changeData {

public static void main(String[] args) {

try {

//Première étape,AccèsClassExemple ,L'une des trois méthodes

// Student stu = new Student();

// Class stuClass = (Class) stu.getClass();

Class stuClass = Student.class;

//Deuxième étape,Méthode d'obtention

Method m = stuClass.getDeclaredMethod(“hello”);

//Résoudre les erreurs signalées:java.lang.IllegalAccessException: Class test.changeData can not access a member of class test.Student with modifiers “private”

m.setAccessible(true);

//Troisième étape,Méthode d'appel

m.invoke(new Student());

} catch (Exception e) {

System.out.println(e);

}

}

}

class Student extends Person{

private void hello(){

System.out.println(“Je viens deStudentDeHello”);

}

}

class Person {

private static void hello(){

System.out.println(“Je viens dePersonDeHello”);

}

}

Problème d'appel pour le polymorphisme de la méthode

===========

package test;

import com.sun.prism.impl.Disposer;

import java.lang.reflect.Array;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

import java.lang.reflect.Modifier;

import java.util.Arrays;

public class changeData {

public static void main(String[] args) {

try {

//Première étape,AccèsClassExemple ,L'une des trois méthodes

Person stu = new Student();

// Class stuClass = (Class) stu.getClass();

Class stuClass = Student.class;

//Deuxième étape,Méthode d'obtention

Method m = stuClass.getDeclaredMethod(“hello”);

版权声明
本文为[Alibaba Open Source]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/11/20211125174908919s.html

Scroll to Top