10. november 2004 - 21:22 
												Der er
									22  kommentarer													og 					1  løsning									 
									
		 
		
			
static kontra non-static 
			Har lavet et program... hvor der er en klasse med nogle Integer get/set metoder. Har to forskellige JSP-sider, hvor det er meningen at jeg skal hente/sætte data. Men debugeren brokker sig over: non-static variable workflow_id cannot be referenced from a static context hvad gør jeg forkert?
					
		
	 
                            
Annonceindlæg fra DE-CIX 
 
 
	
		
								
					
				10. november 2004 - 21:27  
				#1 
			 				 
						
		 
		
			Svært at sige uden at se noget kode. Det plejer at være fordi man bruger en non static variabel i en static metode.
		
		
	 
	
		
								
					
				10. november 2004 - 22:03  
				#2 
						
		 
		
			code fra den eneklasse: public class Workflow {     public Integer workflow_id;          public Integer getWorkflowid()     {     return workflow_id;     }          public void setWorkflowid(Integer w){     workflow_id = w;     }      } kode fra anden klasse som skal hente workflowid: import ... Workflow; public class test {      public void gøretellerandet()   {        Workflow.setWorkflowid(værdi)   } }
		
		
	 
	
		
								
					
				10. november 2004 - 22:04  
				#3 
			 				 
						
		 
		
			Workflow.setWorkflowid(værdi) forudsætter at setWorkflowid er en static metode !
		
		
	 
	
		
								
					
				10. november 2004 - 22:05  
				#4 
			 				 
						
		 
		
			En ikke static metode kræver: objektaftypenWorkflow.setWorkflowid(værdi)
		
		
	 
	
		
								
					
				10. november 2004 - 22:05  
				#5 
						
		 
		
			så den skal hedde: static void setWorkflowid(Integer w){     workflow_id = w;     } ?
		
		
	 
	
	
	
		
								
					
				10. november 2004 - 22:07  
				#6 
			 				 
						
		 
		
			Jeg er 98% sikker på at du skal beholde nmetoden som ikke static og i.s.f. kalde metoden på et objekt fremfor en klasse
		
		
	 
	
		
								
					
				10. november 2004 - 22:22  
				#7 
						
		 
		
			Hvordan skulle det se ud... kan du vise et eksempel?
		
		
	 
	
		
								
					
				10. november 2004 - 22:24  
				#8 
			 				 
						
		 
		
			public void gøretellerandet()   {       Workflow wf = new Workflow();       wf.setWorkflowid(værdi)   } eller   public void gøretellerandet(Workflow wf)   {       wf.setWorkflowid(værdi)   }
		
		
	 
	
		
								
					
				10. november 2004 - 22:44  
				#9 
						
		 
		
			Ved ikke hvad jeg tænkte på... men mange tak... tror det er senge tid. Nu virker det troede jeg havde prøvet det, men havde åbentbart lavet en fejl. Du kan bare skrive svar
		
		
	 
	
		
								
					
				10. november 2004 - 22:45  
				#10 
			 				 
						
		 
		
			svar
		
		
	 
	
		
								
					
				10. november 2004 - 23:09  
				#11 
						
		 
		
			ups.. men ved new bliver værdierne slettet?... det går ikke
		
		
	 
	
		
								
					
				10. november 2004 - 23:25  
				#12 
						
		 
		
			den der kalder: denandenklasse: public void gøretellerandet(Workflow wf)   {       wf.setWorkflowid(værdi)   } hvad skal man kalde der??? denandenklasse.gøretellerandet(?????);
		
		
	 
	
		
								
					
				10. november 2004 - 23:33  
				#13 
			 				 
						
		 
		
			Den skal naturligvis kaldes med eninstans af Workflow
		
		
	 
	
		
								
					
				10. november 2004 - 23:35  
				#14 
						
		 
		
			så som?... det er fordi jeg flere gange skal hente workflowid'et fra forskellige klasser... så data må ikke blive newet
		
		
	 
	
		
								
					
				10. november 2004 - 23:36  
				#15 
			 				 
						
		 
		
			På en eller anden måde skal de klasser jo kunne få fat i den samme Workflow. Måske skal Workflow være en singleton ??
		
		
	 
	
		
								
					
				10. november 2004 - 23:37  
				#16 
						
		 
		
			har hørt om singleton... men hvordan skulle det implemeteres?
		
		
	 
	
		
								
					
				10. november 2004 - 23:40  
				#17 
			 				 
						
		 
		
		
	 
	
		
								
					
				10. november 2004 - 23:40  
				#18 
			 				 
						
		 
		
			Så vil du kunne skrive: Workflow.getInstance().setWorkflowid(værdi)
		
		
	 
	
		
								
					
				10. november 2004 - 23:46  
				#19 
						
		 
		
			Kan du lave et eksempel med hvordan denne klasse skal se ud: public class Workflow {     public Integer workflow_id;          public Integer getWorkflowid()     {     return workflow_id;     }          public void setWorkflowid(Integer w){     workflow_id = w;     }      }
		
		
	 
	
		
								
					
				10. november 2004 - 23:51  
				#20 
			 				 
						
		 
		
			public class Workflow {     public Integer workflow_id;     private Workflow instance = null;     private Workflow() {     }     public synchronized static Workflow getInstance() {        if(instance == null) {           instance = new Workflow();        }        return instance;     }         public Integer getWorkflowid()     {     return workflow_id;     }         public void setWorkflowid(Integer w){     workflow_id = w;     }     }
		
		
	 
	
		
								
					
				11. november 2004 - 00:12  
				#21 
						
		 
		
			den melder fejlen: non-static variable instance cannot be referenced from a static context if(instance == null) { non-static variable instance cannot be referenced from a static context instance = new Workflow(); non-static variable instance cannot be referenced from a static context return instance;
		
		
	 
	
		
								
					
				11. november 2004 - 00:35  
				#22 
						
		 
		
			har fundet ud af det
		
		
	 
	
		
								
					
				11. november 2004 - 07:23  
				#23 
			 				 
						
		 
		
			ja instance skulle selvfølgelig være static
		
		
	 
	
		
	
		
		
		
			
			Kurser inden for grundlæggende programmering