Integer. Como saber se não está instanciado

Bem amigos, procuro-os, pois estou passando o seguinte problema.
Tenho que verificar se o retorno de um metodo retorna um valor nulo. Certo com String e Objetos, ficaria mais facil porque verificariamos como null.
Mas em um atributo int, onde o valor default é o Zero, e alguns campos podem adimitir zero como valor deste parametro.
Já procurei e não encontrei algum metodo que fizesse isso…

[quote=71C4700]Bem amigos, procuro-os, pois estou passando o seguinte problema.
Tenho que verificar se o retorno de um metodo retorna um valor nulo. Certo com String e Objetos, ficaria mais facil porque verificariamos como null.
Mas em um atributo int, onde o valor default é o Zero, e alguns campos podem adimitir zero como valor deste parametro.
Já procurei e não encontrei algum metodo que fizesse isso…
[/quote]

71C4700, desculpe a minha ignorância, mas vc está falando exatamente do quê?
Seria primitivo int, ou Wrapper Integer?

Abraço.

Geralmente o que eu vejo ser feito é atribuir -1 ao int.

Isso, o tipo primitivo não vai ser null nunca, e se existe a possibilidade de retornar zero você não pode considerar zero como se fosse não inicializado. Use o valor -1.

Olá! Bem como é a assinatura desse método?
Algo do tipo:
public int nomeMetodo() ou
public Integer nomeMetodo()?

[quote=Giminiani] Olá! Bem como é a assinatura desse método?
Algo do tipo:
public int nomeMetodo() ou
public Integer nomeMetodo()?[/quote]

É public int nomeMetodo() …
Mas não entendi o porque ???
Sim com relação ao default, no java não é o zero.!!!
É pra manipulação do JavaBean, e captura um atributo int.!

opções:

  • int é primitivo, não objeto, por isso nunca sera nulo. o que vc pode fazer é inicializar com um valor negativo, tipo -1 como foi sugerido. teste se o valor é maior que zero, com isso vc sabe que foi “inicializado”.
  • utilize o wrapper Integer, que é um objeto, dessa menira vc pode testar se é nulo.
    de uma lida na documentação sobre os wrappers se vc tiver duvidas.

[]´s

Mas e se o usuario nao preencher o valor do bean?
o valor do int vem zero.
e nao tem como verificar isso ?

[quote=71C4700]Mas e se o usuario nao preencher o valor do bean?
o valor do int vem zero.
e nao tem como verificar isso ?[/quote]

Pois então. Na hora de declarar em vez de fazer isso

int nomeDaVariavel;

coloque isso;

int nomeDaVariavel = -1;

Isso resolveria, mas o grande problema é que os beans serão criados por outra pessoa …
E controlar isso seria um tanto dificil.

[quote=71C4700]Isso resolveria, mas o grande problema é que os beans serão criados por outra pessoa …
E controlar isso seria um tanto dificil.
[/quote]

A menos que eu esteja muito enganado não vejo dificuldade. Se você vai comparar pra ver se ele seria “nula” ou não, obrigatoriamente declarou ela antes. E ali onde é declarado bastaria atribuir -1. Ou estou enganado?

O problema é que ele pode declarar ou nao um valor pro atributo.
Ai que ta o problema!

[quote=71C4700]O problema é que ele pode declarar ou nao um valor pro atributo.
Ai que ta o problema![/quote]
bom, nao existe magica. as soluções estão ae, vc vai ter que escolher.
ou usa int e inicializa o atributo com valor negativo, ou usa Integer.

quanto a nao ser vc que vai criar os beans, nao vejo isso como um problema.
os objetos devem ser definidos seguindo contratos, ou seja, como esse objeto é inicializado e seu comportamento. isso é basico.
no seu caso, seus beans devem seguir determinado contrato que diga que o atributo X tera valor inicial -1 por exemplo.
se quem cria esses objetos não cumpre o contrato o objeto, não é seu problema.

ps. não estou falando de contrato no sentido de ser um papel assinado com valor legal. estou falando de contrato de objetos.

[]´s

[quote]É public int nomeMetodo() …
Mas não entendi o porque ???
Sim com relação ao default, no java não é o zero.!!!
É pra manipulação do JavaBean, e captura um atributo int.! [/quote]
A questão eh, se o método fosse public Integer nomeMetodo() ele retornaria um referencia para um objeto Integer e, sendo assim, poderia retornar null; caso contrário(public int nomeMetodo) isto não seria possível! Como vc falou que era int e não Integer, os colegas te orientaram melhor
Abs!

Quando há essa necessidade de saber se a variável foi inicializada ou não, simplesmente use os wrappers de primitivos, ou seja, Integer.

Se for null ela não foi inicializada. Qualquer coisa diferente de null significa que ela foi e possui um valor válido.

Bem Galera entao é isso !
Num tem jeito, caso o metodo seja um int!
Vlw pela ajuda