Questão sobre static

então, qual a saída do código abaixo? roda direitinho? da erro? pq?

[code]public class FooClass {

static byte m1()
{
final char c = ‘\u0001’;
return c;
}

static byte m3( final char c )
{
return c;
}

public static void main( String[] args )
{
char c = ‘\u0003’;
System.out.print( “” + m1() + m3( c ) );
}

}[/code]

da erro, pq nos metodos declaram o tipo de retorno byte e retornam um char… se fosse o contrario acho q funcionava…

Da erro apenas no método m3, você pode declarar o retorno como byte e retornar uma constante char ou short desde que essa constante seja constante em tempo de compilação.
No método m3, o retorno não é uma constante em tempo de compilação. Nunca se sabe o que o parametro pode conter, por isso da pau, mas já no método m1, o retorno é uma constante em tempo de compilação e isso não gera problema.

isso ai, o samuel toco o horror… ehaheahae, se o m3() fosse retornado assim:

…até rolava :slight_smile:

[quote=“matheus”]isso ai, o samuel toco o horror… ehaheahae, se o m3() fosse retornado assim:

…até rolava :)[/quote]

concordo, mas o cast deveria ser assim: return (byte) c;