Object nach Vererbung mit Class Object überprüfen

DuffCola

Aktives Mitglied
Hallo,
wenn ich in einer Klasse eine Member habe, die eine Klasse hält, also z.B.
Java:
Class<MeineKlasse> klasse = MeineKlasse.class;
Wie kann ich jetzt, wenn ich eine Methode mit Parameter habe, voraussetzten, das dieser Parameter von von der klasse in der Member erbt?
Java:
	public void meineMehtode(Object objektDassVonDerKlasseInDerMemberErbenSollxD)
	{
		
	}
 
o0 Was genau versuchst du da....


Java:
<? extends MeineKlasse>

oder

Java:
<? super E>

Wenn ich dich richtig verstanden habe, (zumindest laut title) willst du überprüfen ob zwei objekte identisch sind ?

Typprüfung wird mit
Code:
xyz.getClass()
oder wenn es nicht anders geht mit
Code:
A instanceOf B
verglichen.

Dafür könntest du die
Code:
equals();
Methode von Object überschreiben.
 
Zuletzt bearbeitet:
Also eigentlich geht es darum wie ich die warnung mit unchecked cast weg zu bekommen.
Java:
public class DynamicArray <Type>
{
	Object[] array;

	
	public DynamicArray(int size)
	{
		array = new Object[size];
	}


	public Type set(int index, Type newElement)
	{
		if(index >= array.length)
		{
			Object[] oldArray = array;
			Object[] newArray = new Object[index];
			
			for(int iterator = 0; iterator < oldArray.length; iterator++)
			{
				newArray[iterator] = oldArray[iterator];
			}
			newArray[index] = newElement;
		}
		
		array[index] = newElement;
		
		return newElement;
	}
	public Type get(int index)
	{
// Hier unchecked cast
		return (Type) array[index];
	}
}

Ich bin relative neu was generics angeht, so hat mich auch erstmal gewundert, dass man gar keine Arrays von generics Typen machen kann.
Warum?
Und warum kann ich vom Type nicht zum beispiel die klasse mit Type.class bekommen.
Also so "ganz" verstehe ich das mit generics nicht.
Und wie verwirkliche ich, das was man vom Sinn hier sieht am saubersten?

PS: Vergesst das da oben mal lieber 😳
 
Zuletzt bearbeitet:
Also, wenn man z.B die
Code:
.equals(Object);
Methode von Object überschreibt

Prüft man eigentlich immer auf 3 Dinge

1. Null Akzeptanz
2. Reflexivität
3. Typgleichheit

Java:
@Override
public boolean equals(Object other){

if(other == null){
  return false;
}
if(this == other){
  return true;
}
if(this.getClass() != other.getClass(){
  return false;
}


}

[EDIT]
Wie du dem von mir verlinkten Artikel entnehmen kannst , kannst du die Unchecked Cast meldung nicht wegbekommen da Typvergleiche auf Generischen Typen nicht möglich sind, bzw. vom Compiler nicht zugelassen werden um in der Programmiersprache Java ebend Typsicherheit zu gewährleisten , welche ebend durch die Typ Erasure beim Kompilieren nicht mehr gegeben wäre .
[/EDIT]
 
Zuletzt bearbeitet:

Zurück
Oben