Java Klasse als parameter einer methode?

sayhi

Ensign
Registriert
Jan. 2011
Beiträge
185
Hi, wäre es möglich folgende Methode so zu ändern das ich ihr als parameter weiterhin einen String aber auch noch eine Klasse übergebe, und diese übergebene klasse unten dann bei instanceof überprüft wird?
also zb würd ich die methode so aufrufen wollen:
blabla.contains(name, Seil);
Methode wird abgearbeitet
..
..
..
...instanceof Seil

und mit jeder belieben weiteren klassen..


public boolean contains(String name) {
for (int i = 0; i < this.getC().size(); i++) {
if (this.getClients().get(i) instanceof Bungie) {
if (name.equals(this.getC().get(i).getName())) {
return true;
}
}
}
return false;
}
 
müsste so gehen:
Code:
public boolean contains(String name, object o)
 
So hab ichs auch probiert aber es geht nicht weil man so ja ein konkretes Object übergeben muss.
Ich möchte aber sozusagen nur eine Klasse als Parameter übergeben und was immer ich in diesen parameter o schreibe soll unten bei instanceof o nochmal erscheinen.
Sozusagen den Klassen namen als variable. Ist das sonst irgendwie möglich?
 
Bitte lerne den Unterschied zwischen Objekten und Klassen.

Klasse können nicht übergeben werden, weder als Eingabe noch als Ausgabeparameter, nur Objekte von Klassen.
 
Code:
public boolean contains( String name, Klasse1 o ) { ... }
public boolean contains( String name, Klasse2 o ) { ... }
public boolean contains( String name, Klasse3 o ) { ... }
...
Geht in Java doch bestimmt auch?!
 
Code:
import java.lang.reflect.Type;

public static boolean isInstance(Type t,Object o)
{
	return o.getClass() == t;
}

B klasseB = new B();
C klasseC = new C();

System.out.println(isInstance(B.class, klasseB)); //True

System.out.println(isInstance(B.class, klasseC)); //False

Vielleicht hilft das.
 
Zuletzt bearbeitet:
TheRealVash schrieb:
Bitte lerne den Unterschied zwischen Objekten und Klassen.

Klasse können nicht übergeben werden, weder als Eingabe noch als Ausgabeparameter, nur Objekte von Klassen.

Stimmt zwar, aber es können Klassenobjekte übergeben werden - Objekte der Klasse Class, und damit läßt sich auch das machen, was der OP möchte:

Code:
public boolean contains(String name, Class klass) {
    for (int i = 0; i < this.getC().size(); i++) {
        if (klass.isInstance(this.getClients().get(i))) {
            if (name.equals(this.getC().get(i).getName())) {
                return true;
            }
        }
    }
    return false;
}

Der Aufruf sähe dann so aus:

Code:
blabla.contains(name, Seil.class)
 
Danke Nullpointer, funktioniert so ;)
 
Zuletzt bearbeitet:
Zurück
Oben