Problem mit Generics

Ich brauch eine Methode die ein „Class“ Objekt zurückgibt, und diese Class soll irgendetwas repräsentieren, das „Base“ und „Feature“ implementiert. In meinem Beispiel unten wäre das „Product“. Mit Generics sollte man das eigentlich beschreiben können, aber Eclipse findet meinen Code garnicht toll. Mein „Product.class“ ist scheinbar kein „Class<Base & Feature>“. Hat jemand eine Idee wie man das zum kompilieren bringt? Ohne Cast natürlich :stuck_out_tongue_winking_eye:


public class GenericsTest {
	public static interface Factory{
		public <T extends Base & Feature> Class<? extends T> getType();
	}
	
	public static class ConcreteFactory implements Factory{
		@Override
		public <T extends Base & Feature> Class<? extends T> getType() {
			return Product.class;  // <-- Type mismatch, wieso?
		}
	}
	
	public static class Base{
		
	}
	
	public static interface Feature{
		
	}
	
	public static class Product extends Base implements Feature{
		
	}
}

Hi,

wie sieht es hiermit aus?

public class GenericTest {

	public static interface Factory<T extends Base & Feature> {
		public Class<T> getType();
	}

	public static class ConcreteFactory implements Factory<Product> {
		@Override
		public Class<Product> getType() {
			return Product.class;
		}
	}

	public static class Base {

	}

	public static interface Feature {

	}

	public static class Product extends Base implements Feature {

	}
}

ins Blaue geraten.

ein einfacher **(Class<? extends T>) ** cast ?

ja, wenn der generische Type nur an der Methode hängt, ist er überhaupt nicht festgelegt,
dann kann es keine generische Sicherheit geben, außer von Parametern abgeleitet

public static <T extends Number> T getType3()
{
    return new Integer(4);
}

genauso Fehler

Damn, SlaterB da liegst du wohl richtig. Muss wohl TingelTangels Lösung verwenden. Danke euch.