<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ebene7 &#187; Anonyme Klasse</title>
	<atom:link href="http://blog.ebene7.com/schlagwort/anonyme-klasse/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ebene7.com</link>
	<description></description>
	<lastBuildDate>Tue, 04 Jun 2013 18:57:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Programmieren mit anonymen Klassen</title>
		<link>https://blog.ebene7.com/2010/02/08/programmieren-mit-anonymen-klassen/</link>
		<comments>https://blog.ebene7.com/2010/02/08/programmieren-mit-anonymen-klassen/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 09:00:46 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tipps und Tricks]]></category>
		<category><![CDATA[Anonyme Klasse]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Entwurfsmuster]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[Vererbung]]></category>

		<guid isPermaLink="false">http://blog.ebene7.com/?p=344</guid>
		<description><![CDATA[Beim Programmieren mit Java, besonders wenn es um GUI-Programmierung geht, hat man es oft mit Listener (Observer) zu tun, z.B. um auf Aktionen wie Mouse-Klicks reagieren zu können. Da diese Listener oftmals sehr speziell sind und auch nur an einer &#8230; <a href="https://blog.ebene7.com/2010/02/08/programmieren-mit-anonymen-klassen/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Beim Programmieren mit Java, besonders wenn es um <a href="http://de.wikipedia.org/wiki/GUI" target="_blank">GUI</a>-Programmierung geht, hat man es oft mit <a href="http://de.wikipedia.org/wiki/Observer_%28Entwurfsmuster%29" target="_blank">Listener (Observer)</a> zu tun, z.B. um auf Aktionen wie Mouse-Klicks reagieren zu können.</p>
<p><span id="more-344"></span>Da diese Listener oftmals sehr speziell sind und auch nur an einer Stelle zum Einsatz kommen, kann man hier mit namenlosen, anonymen Klassen arbeiten.</p>
<p>Anonyme Klassen bieten die Möglichkeit, <a href="http://de.wikipedia.org/wiki/Schnittstelle_%28Programmierung%29" target="_blank">Schnittstellen</a> bei der Instanziierung zu implementieren.</p>
<p>Hier als Beispiel das ExampleListener-Interface:</p>
<pre>interface ExampleListener {
  public void onAction1();
  public void onAction2();
}</pre>
<p>Das Interface schreibt zwei Methoden vor, die wir entweder mit einer lokalen Klasse oder anonym implementieren können. Zu vielen Listeners gibt es übrigens auch Adapterklassen, die das oder die Interface(s) durch leere Methoden implementieren.</p>
<pre>class ExampleListenerAdapter implements ExampleListener {
  public void onAction1() {}
  public void onAction2() {}
}</pre>
<p>Der Vorteil von Adaptern ist, dass wir mit der anonymen Klasse nur das implementieren müssen, was wir brauchen und nicht die komplette Schnittstelle.</p>
<p>So können wir jetzt beides verwenden.</p>
<pre>object.addListner(
  new ExampleLister() {
    public void onAction1() {
      // Mach was bei Action1
    }
    public void onAction2() {
      // Mach was bei Action2
    }
  }
);</pre>
<p>oder</p>
<pre>object.addListener(
  new ExampleListenerAdapter() {
    public void onAction2() {
      // Mach was bei Action2
    }
  }
);</pre>
<p>Die Verwendung ist vielleicht anfangs ungewöhnlich, spart aber das Anlegen von Klassendateien und hält dadurch auch das Projekt übersichtlicher.</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.ebene7.com/2010/02/08/programmieren-mit-anonymen-klassen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
