instruction java
Le
atef

public SingleSupervisedLearner createSupervisedLearner(Entries
entries)
throws InvocationTargetException, NumericEntriesException {
Constructor constructor;
Object[] parameters = null;
try {
// Learner to instanciate is a neural network
if(AbstractNeuralNetwork.class.isAssignableFrom(learnerClass)) {
// début d'instruction à comprendre
constructor = learnerClass.getConstructor(new Class[]
{NumericEntries.class, boolean.class});
if(! (entries instanceof NumericEntries)) {
System.out.println("[ Error : entries are instance of
"+entries.getClass()+" and contain " +
entries.getNbAttribute(Attribute.SYMBOLIC) + " symbolical
attributes ]");
throw new NumericEntriesException();
}
parameters = new Object[] {new
SubNumericEntries((NumericEntries)entries), new Boolean(regression)};
SingleSupervisedLearner learner =
(SingleSupervisedLearner)constructor.newInstanc(parameters);
return learner;
}
// fin des instruction à comprendre
// It's a tree
else if
(AbstractDecisionTree.class.isAssignableFrom(learnerClass))
{
constructor = learnerClass.getConstructor(new Class[] {Entries.class,
boolean.class});
parameters = new Object[] {new SubEntries(entries), new
Boolean(regression)};
return (SingleSupervisedLearner)constructor.newInstance(parameters);
}
}
catch(NumericEntriesException nee) {
throw nee;
}
catch(InvocationTargetException e) {
throw new
InvocationTargetException(e.getCause(), "Cannot
instanciate class " + learnerClass.getName());
}
catch(NoSuchMethodError e) {
throw new
InvocationTargetException(e.getCaus(), "Constructor used
in SingleLearnerFactory doesn't match constructor of class " +
learnerClass.getName());
}
catch(Exception e) {
e.printStackTrace();
}
return null;
}
bon je veus comprendre les lignes marqués et surtout ces 3 là:
constructor = learnerClass.getConstructor(new Class[]
{NumericEntries.class, boolean.class});
parameters = new Object[] {new SubEntries(entries), new
Boolean(regression)};
return (SingleSupervisedLearner)constructor.newInstance(parameters);
Merci
entries)
throws InvocationTargetException, NumericEntriesException {
Constructor constructor;
Object[] parameters = null;
try {
// Learner to instanciate is a neural network
if(AbstractNeuralNetwork.class.isAssignableFrom(learnerClass)) {
// début d'instruction à comprendre
constructor = learnerClass.getConstructor(new Class[]
{NumericEntries.class, boolean.class});
if(! (entries instanceof NumericEntries)) {
System.out.println("[ Error : entries are instance of
"+entries.getClass()+" and contain " +
entries.getNbAttribute(Attribute.SYMBOLIC) + " symbolical
attributes ]");
throw new NumericEntriesException();
}
parameters = new Object[] {new
SubNumericEntries((NumericEntries)entries), new Boolean(regression)};
SingleSupervisedLearner learner =
(SingleSupervisedLearner)constructor.newInstanc(parameters);
return learner;
}
// fin des instruction à comprendre
// It's a tree
else if
(AbstractDecisionTree.class.isAssignableFrom(learnerClass))
{
constructor = learnerClass.getConstructor(new Class[] {Entries.class,
boolean.class});
parameters = new Object[] {new SubEntries(entries), new
Boolean(regression)};
return (SingleSupervisedLearner)constructor.newInstance(parameters);
}
}
catch(NumericEntriesException nee) {
throw nee;
}
catch(InvocationTargetException e) {
throw new
InvocationTargetException(e.getCause(), "Cannot
instanciate class " + learnerClass.getName());
}
catch(NoSuchMethodError e) {
throw new
InvocationTargetException(e.getCaus(), "Constructor used
in SingleLearnerFactory doesn't match constructor of class " +
learnerClass.getName());
}
catch(Exception e) {
e.printStackTrace();
}
return null;
}
bon je veus comprendre les lignes marqués et surtout ces 3 là:
constructor = learnerClass.getConstructor(new Class[]
{NumericEntries.class, boolean.class});
parameters = new Object[] {new SubEntries(entries), new
Boolean(regression)};
return (SingleSupervisedLearner)constructor.newInstance(parameters);
Merci
1) Recherche du constructeur de la classe learnerClass dont la
signature est de la forme :
learnerClass(NumericEntries param1, boolean param2)
Si le paramètre "entries" n'est pas une instance de NumericEntries,
un
message est affiché et une exception NumericEntriesException est
levée.
2) initialise un tableau de 2 objets avec une instance de
SubEntries et une instance de Boolean.
3) Créé une instance de SingleSupervisedLearner. L'instance
est créée à l'aide du constructeur obtenu en (1) et des objets stock és
dans le tableau "parameters" créé en (2). En d'autres termes,
l'instruction
d'introspection ci-dessus est équivalente au code suivant :
SingleSupervisedLearner learner = new SingleSupervisedLearner (
SubNumericEntries((NumericEntries)entries),
new Boolean(regression)
)
--
SeB
message j'ai douté de ça mais une petite remarque la derniére
instruction ne peus pas remplacer les 2 instructions car en faite
SingleSupervisedLearner learner est une interface! Et l'auteur de ce
code a passé par ces instructions pour cette raison et en plus par ce
que les constructeurs des classe "learnerClass " ,qui sont de la
forme subLearner.class , sont differents alors c une forme de
normalisation.
en fin merci beaucoup pour votre coup de main vous etes génial ^^.