Boxing

[code]public class Box {

static void go(Object o){
Byte b = (Byte) o;
    System.out.println(b);
}
public static void main(String[] args) {
    byte b = 5;
    go(b);
}

}
[/code]

Poderiam me explicar pq eu posso passar um tipo primitivo no metodo ‘go’

grato

Porque quando você passo byte 5 para o método, tal byte é transformado em um Byte através de boxing e um Byte pode ser referênciado como sendo um Object

Pq todas as classes extendem Object, inclusive as wrapper. O objeto Byte passa no teste É UM para Object, assim em tempo de execução o boxing é realizado!

Exatamente como Tiburcio_Mancha falou,

Todas as classe extendem object em Java e o object permite você fazer o cast para byte.