# Klasse => Primitiv ? Object instanceof Klasse



## The_S (6. Dez 2007)

Hi,

ich habe eine Methode, der ich eine Klasse und ein Objekt übergebe. Diese Methode soll überprüfen, ob die Klasse primitiv ist (Class#isPrimitiv) und falls ja, ob das übergebene Objekt via Autoboxing in die Klasse "passen" würde. Momentan löse ich das so:


```
protected boolean isPrimitivMatch(Class one, Object two) {
		
		if (!one.isPrimitive()) {
			return false;
		}
		if (two instanceof Integer) {
			return one.getCanonicalName().equals("int");
		}
		if (two instanceof Short) {
			return one.getCanonicalName().equals("short");
		}
		if (two instanceof Byte) {
			return one.getCanonicalName().equals("byte");
		}
		if (two instanceof Long) {
			return one.getCanonicalName().equals("long");
		}
		if (two instanceof Double) {
			return one.getCanonicalName().equals("double");
		}
		if (two instanceof Float) {
			return one.getCanonicalName().equals("float");
		}
		if (two instanceof Character) {
			return one.getCanonicalName().equals("char");
		}
		if (two instanceof Boolean) {
			return one.getCanonicalName().equals("boolean");
		}
		return false;
	}
```

Aber das geht doch sicher noch besser, oder!?

Danke!


----------



## SlaterB (6. Dez 2007)

falls du nur den Code meinst, dann kannst du
one.getCanonicalName().equals("int"); 
usw noch durch
one == Integer.TYPE;
ersetzen,

überhaupt mit zwei Arrays zum Vergleich arbeiten, statt x Einzelvergleiche

an genereller Logik kenne ich nix anderes,
auch schön:

```
public class Test
{

    public static void main(String[] args)
        throws Exception
    {
        Class a = Integer.class;
        Class b = Integer.TYPE;

        System.out.println(a.getName().toLowerCase().contains(b.getName()));
    }
}
```


----------



## The_S (6. Dez 2007)

Ja, das mit den Arrays ist klar. Ich hab das nur mal auf die Schnelle hingeschmiert  . Dein Vergleich mit Integer.TYPE finde ich schonmal deutlich besser, werde ich so übernehmen. Danke!

Sonst noch wer Vorschläge?


----------

