Códigos ruins:

public int obtemTamanho(File arquivo) {
  long l = arquivo.length();
  return (int) l;
}

long a = System.currentTimeMillis();
long b = a + 100;
System.out.println((int) b-a);

No primeiro código, o desenvolvedor, seja qual for a razão, busca o tamanho de um arquivo em um método que retorna int em vez de long. Este código não suporta arquivos maiores que 2GB e apenas retorna o tamanho errado neste caso. Todo código que faz cast de um valor para um tipo menor deve primeiro verificar a possibilidade de overflow e lançar uma exceção se for o caso. O segundo código é outra versão de bug de overflow. Note os parênteses faltantes no comando de println: cast de tipo precede o operador de menos.

Códigos melhores:

public int obtemTamanho(File arquivo) {
  long l = arquivo.length();
  if (l > Integer.MAX_VALUE){
    throw new IllegalStateException(
       "Overflow de int.");
  }
  return (int) l;
}

long a = System.currentTimeMillis();
long b = a + 100;
System.out.println((int) (b-a));