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
[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;