Como bloquear datas?

Tenho o seguinte código:

[color=blue]class Data {
int dia;
int mes;
int ano;
}

class Funcionario {
private String nome;
private String depto;
private double salario;
private Data dataEntrada = new Data();
private String rg;
private boolean contratado;
//atributo estático
private static int identificador;

//…

public void setData(int dia, int mes, int ano) {
this.dataEntrada.dia = dia;
this.dataEntrada.mes = mes;
this.dataEntrada.ano = ano;
}

//…

}[/color]

Como faço para garantir que datas como 31/2/2005 não sejam aceitas?

Obrigado!!

Olá,

Use SimpleDateFormat, como por exemplo:

...
     SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
     String data = "31/02/2006";
	
	try {
		sdf.setLenient(false);
		sdf.parse(data);
	} catch (ParseException e) {
		System.out.println("Data invalida!!");
                e.printStackTrace();
        }
...

[]´s
Rodrigo

Obrigado Rodrigo!!

Na verdade, estou seguindo a apostila da Caelum. Sou iniciante em Java, e acredito que o código que me passou é um pouco mais avançado. Teria uma outra forma mais simples de resolver este problema?

O “mais simples” é realmente assim.

Se você está querendo aprender Java, no entanto, provavelmente você vai ter de fazer um pouco de lógica (ou seja, separar a data em dia, mês e ano, verificar se há 31 dias se o mês for janeiro, março, maio, etc, ou se há 28 dias se for fevereiro de um ano não-bissexto, etc. Dá trabalho (principalmente porque você vai ter de achar a fórmula que diz quando um ano é bissexto) mas não envolve usar nenhuma “Exception”.