101 votes

L'obtention de la Classe de type de Chaîne

J'ai un String qui a un nom d'une classe de dire "Ex" (n .class extension). Je veux attribuer à un Class variable, comme ceci:

Class cls = (string).class

Comment puis-je le faire?

200voto

Bozho Points 273663
Class<?> cls = Class.forName(className);

Mais votre className doit être complet - c'est-àdire com.mycompany.MyClass

46voto

JuanZe Points 4519
String clsName = "Ex";  // use fully qualified name
Class cls = Class.forName(clsName);
Object clsInstance = (Object) cls.newInstance();

De vérifier la Java Tutoriel sentier sur la Réflexion à http://java.sun.com/docs/books/tutorial/reflect/TOC.html pour plus de détails.

11voto

rsp Points 14367

Vous pouvez utiliser l' forName méthode de Class:

                Class cls = Class.forName(clsName);
                Object obj = cls.newInstance();

4voto

gmhk Points 4151

Vous pouvez obtenir la Classe de référence de la catégorie au cours de l'exécution serait par le biais de la Réflexion Java Concept.

Vérifiez le Code ci-Dessous. Explaianation est donnée ci-dessous Voici un exemple qui utilise retournés en Classe pour créer une instance de la Classe:

  package com.xyzws;class AClass {
      public AClass() {
        System.out.println("AClass's Constructor"); 
     }  
    static {   
      System.out.println("static block in AClass");  
     }
    }
    public class Program {   
    public static void main(String[] args) {
        try {       
    System.out.println("The first time calls forName:");   
       **Class c   = Class.forName("com.xyzws.AClass");      
     AClass a = (AClass)c.newInstance();    
      System.out.println("The second time calls forName:");  
        Class c1 = Class.forName("com.xyzws.AClass");** 
       } catch (ClassNotFoundException e) { 
               ...    } catch (InstantiationException e) {  
              ...    } catch (IllegalAccessException e) { 
               ...    }     
         }
    }


    The output is
    The first time calls forName:
    static block in AClass
    AClass's Constructor
    The second time calls forName:
      //Calss has been loaded so there is not "static block in AClass" printing outThe second 

Le Exaplaination est ci-dessous

Classe.ForName est appelé pour obtenir un Objet de Classe

À l'Aide de la Classe de l'Objet, nous sommes de la création de la nouvelle instance de la Classe.

Des doutes à propos de ce laissez-moi savoir

3voto

Hans Westerbeek Points 2668

eeh.. Classe.forName(String classname) ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X