Methode - erweiterte Signatur?

flashray

Erfahrenes Mitglied
Hallo,

die Signatur einer Methode in Java ist ja bekanntlich ...
1. der Methodenname und
2. die Anzahl und Typen der Parameter in der richtigen Reihenfolge.

Es ist auch in mancher Literatur von "erweiterten Signaturen" die Rede. Allerdings habe ich keine genaue Beschreibung dessen gefunden. Was ist nun in dieser erweiterten Signatur noch alles drin?


Vg Erdal
 
Hallo Tom,

beispielsweise hier:
http://www.galileocomputing.de/open...sel02_006.htm#Rxx747java02006040000AD1F02C106

Da steht folgendes. Es ist aber nicht explizit definiert was nun jetzt alles zur erweiterten Signatur gehört!
Code:
Beispiel   
Es gibt Funktionen, die noch andere Modifizierer und eine erweiterte Signatur besitzen. 
Ein weiteres Beispiel aus der API:

<span class="listing">protected final void implAccept(Socket s)
throws IOException</span>

Vg Erdal
 
Hallo!

Schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

/**
 * @author Thomas.Darimont
 *
 */
public class MethodDeclarationExample {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Foo f = new Foo();
		try {
			f.foo("");
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		IFoo foo = new FooImpl();
		try {
			foo.fooOperation(); // Hier wurde im Interface deklariert dass eine Exception geworfen werden kann, jedoch
			// muss in der Implementierungsklasse die Methode nicht notwendigerweise auch diese Exceptions deklarieren...
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		Foo b = new Bar();
		try {
			b.foo(""); // Bar.Foo wirft keine Excpetion aber da in der Methodensignatur der Oberklasse throws Exception steht müssen wir hier auch ein
			//try catch herum bauen...
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	static class Foo{
		public void foo(String s) throws Exception{
			System.out.println("Foo.foo(String) throws Exception");
		}
	}
	
	static class Bar extends Foo{
		@Override
		public void foo(String s){
			System.out.println("Bar.foo(String)");
		}
	}
	
	static interface IFoo{
		void fooOperation() throws Exception;
	}
	
	static class FooImpl implements IFoo{

		public void fooOperation(){
			System.out.println("FooImpl.fooOperation()");
		}
		
	}
}

Gruß Tom
 
Hallo Tom,

also zur erweiterten Signatur gehört also zusätzlich die Angabe einer Exception, wobei dieser eventuell auch in der Oberklasse bzw. im Interface stehen können. Der Rückgabewert und der Modifizierer gehören auch nicht zur erweiterten Signatur.

Ist das so richtig?


Vg Erdal
 
Zurück