duvida tem como tem tempo de execução
eu saber que o campo dtNascimento seu tipo é Date …
se alguém puder me ajudar
class Cliente {
private int id;
private String nome;
private Date dtNascimento;
duvida tem como tem tempo de execução
eu saber que o campo dtNascimento seu tipo é Date …
se alguém puder me ajudar
class Cliente {
private int id;
private String nome;
private Date dtNascimento;
tem sim…
boolean isDate = objetoQualquer instaceof java.util.Date;
se entendi bem sua pergunta
Ou vc utiliza o [b]instance of[b] ou atraves do nome da classe:
String s = new String();
Date d = new Date();
Object o = new Object();
ArrayList lst = new ArrayList();
HashMap hm = new HashMap();
System.out.println(s.getClass().getName());
System.out.println(d.getClass().getName());
System.out.println(o.getClass().getName());
System.out.println(lst.getClass().getName());
System.out.println(hm.getClass().getName());
///////////Saída no console/////////////////////
java.lang.String
java.util.Date
java.lang.Object
java.util.ArrayList
java.util.HashMap
agora vc pode verificar um objeto randomico assim
Object a = getObject();
Field[] campos = a.getClass().getDeclaredFields();
for (Field f : campos) {
System.out.println("O campo " + f.getName() + " é do tipo " + f.getDeclaringClass());
}
desta forma vc descobre todos os campos de um objeto
fiz o seguinte abaixo mas não aparece o nome tipo do atibuto por exemplo
private Calendar birthDate;
queria que mostrasse Calendar
public class ImsUserImpl {
@Id
@GeneratedValue
@Column(name = "USER_ID")
/** Identificador único */
private Long id;
@Column(nullable = false)
/** Nome do usuário */
private String name;
@Column(nullable = false)
@Column
@Temporal(TemporalType.DATE)
private Calendar birthDate;
abs
public static void main(String[] args) throws ClassNotFoundException {
Class cls = Class.forName("br.com.User");
Field[] campos = cls.getClass().getDeclaredFields();
for (Field f : campos) {
System.out.println("O campo " + f.getName() + " é do tipo " + f.getDeclaringClass()+ " tipao ="+f.getModifiers());
}
O campo ANNOTATION é do tipo class java.lang.Class tipao =26
O campo ENUM é do tipo class java.lang.Class tipao =26
O campo SYNTHETIC é do tipo class java.lang.Class tipao =26
O campo cachedConstructor é do tipo class java.lang.Class tipao =194
O campo newInstanceCallerCache é do tipo class java.lang.Class tipao =194
O campo name é do tipo class java.lang.Class tipao =130
O campo allPermDomain é do tipo class java.lang.Class tipao =10
O campo useCaches é do tipo class java.lang.Class tipao =10
O campo declaredFields é do tipo class java.lang.Class tipao =194
O campo publicFields é do tipo class java.lang.Class tipao =194
O campo declaredMethods é do tipo class java.lang.Class tipao =194
O campo publicMethods é do tipo class java.lang.Class tipao =194
O campo declaredConstructors é do tipo class java.lang.Class tipao =194
O campo publicConstructors é do tipo class java.lang.Class tipao =194
O campo declaredPublicFields é do tipo class java.lang.Class tipao =194
O campo declaredPublicMethods é do tipo class java.lang.Class tipao =194
O campo classRedefinedCount é do tipo class java.lang.Class tipao =194
O campo lastRedefinedCount é do tipo class java.lang.Class tipao =194
O campo genericInfo é do tipo class java.lang.Class tipao =130
O campo serialVersionUID é do tipo class java.lang.Class tipao =26
O campo serialPersistentFields é do tipo class java.lang.Class tipao =26
O campo reflectionFactory é do tipo class java.lang.Class tipao =10
O campo initted é do tipo class java.lang.Class tipao =10
O campo enumConstants é do tipo class java.lang.Class tipao =194
O campo enumConstantDirectory é do tipo class java.lang.Class tipao =194
O campo EMPTY_ANNOTATIONS_ARRAY é do tipo class java.lang.Class tipao =10
O campo annotations é do tipo class java.lang.Class tipao =130
O campo declaredAnnotations é do tipo class java.lang.Class tipao =130
O campo annotationType é do tipo class java.lang.Class tipao =2
tem razão… o correto seria getType()
[code]public class Temp {
public class ImsUserImpl {
@Id
@GeneratedValue
@Column(name = "USER_ID")
/** Identificador único */
private Long id;
@Column(nullable = false)
/** Nome do usuário */
private String name;
@Column(nullable = false)
@Temporal(TemporalType.DATE)
private Calendar birthDate;
}
public static void main(String[] args) {
Field[] campos = ImsUserImpl.class.getDeclaredFields();
for (Field f : campos)
System.out.println(f.getName() + ".class == " + f.getType().getName());
}[/code]
resposta do console
id.class == java.lang.Long
name.class == java.lang.String
birthDate.class == java.util.Calendar
ahh mais uma coisa que notei agora
[quote=paribe]//...
Class cls = Class.forName("br.com.User");
Field[] campos = cls.getClass().getDeclaredFields(); //<=== isso aqui não esta correto, vc ta analizando a classe Class
//...
[/quote]
Vc deveria fazer apenas cls.getDeclaredFields(); pois cls já é a classe que vc quer… e c vc faz cls.getClass() vai te retornar
a classe Class