C言語なら、

int* test1;
char* test2 = (char*)test1;

とか配列の参照をキャストできるのに、javaでは

byte[] test1;
long[] test2 = (long[])test1;

と書けませんよね?
なぜですか?