Kann man das verkürzen/vereinfachen?

oldshoe

Bekanntes Mitglied
Java:
public void handleEvent(Event event) {
		ContentObject conObj;
		
		if (event instanceof PageCreateEvent){
			PageCreateEvent pageCrtEv = (PageCreateEvent)event;
			conObj= pageCrtEv.getContent();
			analyzeContentObj(conObj);
		}else{
			if(event instanceof PageUpdateEvent) {
				PageUpdateEvent pageUpdEv=(PageUpdateEvent) event;
				conObj= pageUpdEv.getContent();
				analyzeContentObj(conObj);
		     }else{
			        if (event instanceof BlogPostUpdateEvent){
				BlogPostUpdateEvent blogUpdEv= (BlogPostUpdateEvent)event;
				conObj= blogUpdEv.getContent();				
				analyzeContentObj(conObj);
				
			}else{
				if (event instanceof BlogPostCreateEvent){
					BlogPostCreateEvent blogCrtEv = (BlogPostCreateEvent)event;
					conObj= blogCrtEv.getContent();
					analyzeContentObj(conObj);
				}
			}
		}
				
		
		}
	}

Ideen? Danke...
 
S

SlaterB

Gast
Java:
public void handleEvent(Event event) {
		if (event instanceof ContentHolder){
			ContentHolder ch= (ContentHolder)event;
			ContentObject conObj= ch.getContent();
			analyzeContentObj(conObj);
		}
	}
ContentHolder/ ContentEvent wäre ein Interface/ Basisklasse mit der Methode getContent(), von allen zugehörigen Klassen implementiert/ geerbt,
wenn du weißt dass nur derartige Events kommen, kann das if wegfallen
 

oldshoe

Bekanntes Mitglied
Hmmm..danke erstmal nur leider wird sich das wohl nicht umsetzen lassen, da ich die EventKlassen wie PageCreateEvent nicht bearbeiten und somit keine "implements" hinzufügen kann.
 
S

SlaterB

Gast
ohne extreme Tricks wie Reflection musst du dann wirklich jede Klasse einzeln bearbeiten,

das immer gleiche
analyzeContentObj(conObj);
könnte noch raus und nur einmal am Ende stehen

-------

Java:
BlogPostCreateEvent blogCrtEv = (BlogPostCreateEvent)event;
 conObj= blogCrtEv.getContent();
->
conObj= ((BlogPostCreateEvent)event).getContent();

--------

und benutze sauberes
Java:
  if {

  } else if {

  } else if {
statt deiner wilden Verschachtelung
 

faetzminator

Gesperrter Benutzer
Sprichst du von [c]com.atlassian.confluence.*[/c]? Da gibt es [c]ContentEvent[/c], welches [c]public abstract ContentEntityObject getContent()[/c] definiert. Da drunter sind alle PageEvents, BlogEvents etc.

Edit: D.h. für dich, dass du SlaterB's Code 1:1 verwenden kannst, mit der Ausnahme, dass du einfach auf [c]ContentEvent[/c] überprüfen und casten musst an Stelle von [c]ContentHolder[/c].
 
Zuletzt bearbeitet:

oldshoe

Bekanntes Mitglied
Sprichst du von [c]com.atlassian.confluence.*[/c]? Da gibt es [c]ContentEvent[/c], welches [c]public abstract ContentEntityObject getContent()[/c] definiert. Da drunter sind alle PageEvents, BlogEvents etc.

Edit: D.h. für dich, dass du SlaterB's Code 1:1 verwenden kannst, mit der Ausnahme, dass du einfach auf [c]ContentEvent[/c] überprüfen und casten musst an Stelle von [c]ContentHolder[/c].

ja super so funktioniert es...wie von SlaterB vorgeschlagen reicht dann auch:

Java:
ContentEvent ch= (ContentEvent)event;
ContentEntityObject conObj= ch.getContent();
analyzeContentObj(conObj);

Danke
 

Ähnliche Java Themen

Neue Themen


Oben