nur integer möglich bei der wertübergabe

melmager

Erfahrenes Mitglied
wenn ich so eine Methode aufrufe

bla.testeingang(0);

muss die Methode

public void testeingang(int test) {
}

so aufgbaut werden

wenn ich die variable test als byte oder short declariere bekomme ich immer ein Compilerfehler

warum ist das so?
 
Hi, ich denk mal es ist so , das beim Aufruf von testeingang(1) das Literal 1
als Integer vom Compiler interpretiert wird, und dieser lässt sich von ihm nun
mal nicht implizit in einen short oder byte casten

Gruß

RedWing
 
Hallo!

Ganzahlige Literale sind in Java immer implizit vom Typ int
Code:
package de.tutorials.test;

public class Test47 {

	public static void main(String[] args) {
		test(10);
		test((byte)10);
		test((short)10);
	}
	
	public static void test(int i){
		System.out.println("test(int i) -> " + i);
	}
	
	public static void test(short i){
		System.out.println("test(short i) -> " + i);
	}
	
	public static void test(byte i){
		System.out.println("test(byte i) -> " + i);
	}
}

Wenn du bytes bzw. shorts verwenden willst musst du die Literale explizit casten...

Gruß Tom
 
Zurück