Problème d'héritage

Tanguymki - Modifié par BunoCS le 22/11/2013 à 16:54
 Tanguymki - 22 nov. 2013 à 09:33
Bonjour,

Comment allez vous? Je souhaite avoir des explications sur extends en Java. Je m'explique.
J'ai une application qui avec 3 classes une classe mère et deux classes filles comme suite.


Public class Mclass {
public String var1;
public String var2;

 public String getVar1() {
        return var1;
    }

    public void setVar1(String var1) {
        this.var1= var1;
    }

public String getVar2() {
        return var2;
    }

    public void setVar2(String var2) {
        this.var2= var2;
    }

 public CartesianChartModel getCategoryModel() {
  
           
        String choix =  getVar1();
        String selectText  =  getVar2(); 
        .
        .
        .
  }

}

J'ai une classe fille


public class CBean extends Mclasse {

  public CartesianChartModel getCategoryModel() {
  
            categoryModel = new CartesianChartModel();  
           
           String choiceOne =   getVar1();
                
           String selectTextOne  =  getVar2();
         .
         .
         .
  
   }
}



Mon problème ai que lorsque je fais appel à CartesianChartModel depuis la Class Mclasse il n'y a pas de problème ça fonctionne comme je veux mais lorsque je veux faire l'appel CartesianChartModel depuis la classe CBean là il y a un problème message erreur :

An Error Occurred:
java.lang.NullPointerException

Es ce que l'on peu m'expliquer comme faire pour utiliser mes variables (var1, var2) avec sa valeur de la classe Mclasse dans la classe CBean ?

Merci d'avance et bonne journée.

11 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
21 nov. 2013 à 11:08
Salut,

Tu ne nous en donne pas assez, quel est le contenu de tes méthodes getVar1 et getVar2 ?

Et surtout peux tu nous donner la trace complète de ton exception.

Tu appelles une méthode sur un objet qui est null.
0
contenu des methodes getVar1()

public String getVar1() { 
return var1; 
}  

public String getVar2() { 
return var2; 
} 


Trace

java.lang.NullPointerException
at Jsf.ChartOneBean.getCategoryModel(ChartOneBean.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:363)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at com.sun.el.parser.AstValue.getValue(AstValue.java:140)
at com.sun.el.parser.AstValue.getValue(AstValue.java:204)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:226)
at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UIOutput.getValue(UIOutput.java:174)
at org.primefaces.component.chart.bar.BarChartRenderer.encodeData(BarChartRenderer.java:119)
at org.primefaces.component.chart.bar.BarChartRenderer.encodeScript(BarChartRenderer.java:51)
at org.primefaces.component.chart.bar.BarChartRenderer.encodeEnd(BarChartRenderer.java:36)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:924)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:894)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:894)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:443)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
at java.lang.Thread.run(Thread.java:724)
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
21 nov. 2013 à 11:50
Hello,
J'ai rajouté des balises code dans ta demande (4e icone au-dessus de la zone de texte).
Merci d'y penser la prochaine fois ;)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
21 nov. 2013 à 14:23
Je pense que si tu me donnes le code complet de getCategoryModel je te dirai où se trouve l'erreur.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
voici le code complet demandé


public CartesianChartModel getCategoryModel() {

categoryModel = new CartesianChartModel();

ChartOneBean ChartB = new ChartOneBean();
listexpertafro = ExpLogic.graphicsAffiched();


String choiceOne = ChartB.getGraphComboboxSearch();

String selectTextOne = ChartB.getTextcryteriatGraph();

if (selectTextOne.equals("")) {


if (choiceOne.equals("Sex")) {

//Sex
int nbsexM = 0;
int nbsexF = 0;
for (int i = 0; i < listexpertafro.size(); i++) {
if (listexpertafro.get(i).getSex()==1) nbsexM++;
else nbsexF++;
}

ChartSeries sex = new ChartSeries();
sex.setLabel("Sex");

sex.set("Male", nbsexM);
sex.set("Female", nbsexF);

categoryModel.addSeries(sex);
}

if (choiceOne.equals("Status")) {

//Status
int statusPstaf = 0;
int statusNPO = 0;

for (int i = 0; i < listexpertafro.size(); i++) {
if (listexpertafro.get(i).getStatutsExpID().getIDStatus().equals(9)) statusPstaf++;
else statusNPO++;
}

ChartSeries status = new ChartSeries();
status.setLabel("Status");

status.set("Professional Officer", statusPstaf);
status.set("National Officer", statusNPO);

categoryModel.addSeries(status);
}


} else {


if (choiceOne.equals("Sex")) {

//Sex
int nbsex = 0;
for (int i = 0; i < listexpertafro.size(); i++) {
if (selectTextOne.equals("Male")) {
if (listexpertafro.get(i).getSex()==1) nbsex++;

} else if (selectTextOne.equals("Female")) {
if (listexpertafro.get(i).getSex()==2) nbsex++;

}

}

ChartSeries sex = new ChartSeries();
sex.setLabel("Sex");

sex.set(selectTextOne, nbsex);
categoryModel.addSeries(sex);

}

if (choiceOne.equals("Status")) {

//Status
int statusP = 0;

for (int i = 0; i < listexpertafro.size(); i++) {
if (listexpertafro.get(i).getStatutsExpID().getStatus().equals(selectTextOne)) statusP++;

}

ChartSeries status = new ChartSeries();
status.setLabel("Status");

status.set(selectTextOne, statusP);

categoryModel.addSeries(status);
}

if (choiceOne.equals("Grade")) {

//Grade
int gradechoix = 0;

for (int i = 0; i < listexpertafro.size(); i++) {
if (listexpertafro.get(i).getGradeExpt().getGrade().equals(selectTextOne)) gradechoix++;

}


ChartSeries grade = new ChartSeries();
grade.setLabel("Grade");


grade.set(selectTextOne, gradechoix);

categoryModel.addSeries(grade);

}

}



return categoryModel;
}

public void setCategoryModel(CartesianChartModel categoryModel) {
this.categoryModel = categoryModel;
}

Merci d'avance
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
21 nov. 2013 à 15:49
Quelle ligne qui lève l'exception ?
0
Il y en a pas
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
21 nov. 2013 à 15:56
Si il y en a une, c'est la ligne 48, mais je ne sais pas a quoi elle correspond étant donné que je n'ai pas la totalité du code, quelle est la ligne 48 chez toi ?
0
vous parlez de cette ligne là 48?

status.setLabel("Status");
ou bien celle du tracer

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)

Es ce qu'il y a un autre moyen de déclarer une variable dans une classe donnée et de la réutiliser avec ça donnée (valeur) dans une autre classe?
Merci d'avance
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
22 nov. 2013 à 07:44
Non, la ligne 48 pour le compilateur, tu utilises un IDE ? Si oui, quand tu cliques sur une ligne de la trace de l'erreur, la ligne qui la lève s'affichera.
0
Oui j'utilise NetBeans 7.3.1
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
22 nov. 2013 à 08:13
Alors, sur quelle ligne porte l'erreur ?
0
Merci beaucoup pour ton assistance, je commence à comprend certain truc, la ligne 48 du tracer correspond à la ligne suivante dans le code


if (selectTextOne.equals("")) {

il me semble que selectTextOne soit nul bien que initialiser à la ligne


String selectTextOne = ChartB.getTextcryteriatGraph();

alors que ChartB.getTextcryteriatGraph();
--> ChartOneBean ChartB = new ChartOneBean();

il faut dire que ChartOneBean () est une Classe extends de ChartBean() dans la quelle j'ai les lignes suivantes :



private String textcryteriatGraph;

public String getTextcryteriatGraph() {
return textcryteriatGraph;
}

0
Une question comment faire pour récupérer la valeur retourné par

public String getTextcryteriatGraph() {
return textcryteriatGraph;
}


dans une autre classe?
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
22 nov. 2013 à 09:00
Dans ce cas là, oui, c'est normal, textcryteriatGraph est bien null.

Pour t'en assurer, tu peux faire un System.out.println(textcryteriatGraph);

En tout cas, ton problème semble enfin réglé !
0
Rejoignez-nous