导航:首页 > 编程语言 > java获取字段的类型

java获取字段的类型

发布时间:2024-12-27 07:43:43

A. java反射:getDeclaredFields() 获取所有的字段,遍历的时候怎么判断是不是数组类型的呢

public class Bean {

private int id;

private String[] love;

public String[] getLove() {
return love;
}

public void setLove(String[] love) {
this.love = love;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}
}

public class Admin {

public static void main(String[] args) {

Field[] f = Bean.class.getDeclaredFields();
for (int i = 0; i < f.length; i++) {
if (f[i].getType().isArray()) {
System.out.println(f[i].getType());
}
}
}
}

B. java如何获得数据库表中各字段的字段名

Java获取数据库的表中各字段的字段名,代码如下:
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.PreparedStatement;import java.sql.ResultSetMetaData;import java.sql.SQLException;public class TestDemo {public static Connection getConnection() {Connection conn = null;try {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://数据库IP地址:3306/数据库名称";String user = "数据库用户名";String pass = "数据库用户密码";conn = DriverManager.getConnection(url, user, pass);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;}public static void main(String[] args) {Connection conn = getConnection();String sql = "select * from AccessType";PreparedStatement stmt;try {stmt = conn.prepareStatement(sql);ResultSet rs = stmt.executeQuery(sql);ResultSetMetaData data = rs.getMetaData();for (int i = 1; i <= data.getColumnCount(); i++) {// 获得所有列的数目及实际列数int columnCount = data.getColumnCount();// 获得指定列的列名String columnName = data.getColumnName(i);// 获得指定列的列值int columnType = data.getColumnType(i);// 获得指定列的数据类型名String columnTypeName = data.getColumnTypeName(i);// 所在的Catalog名字String catalogName = data.getCatalogName(i);// 对应数据类型的类String columnClassName = data.getColumnClassName(i);// 在数据库中类型的最大字符个数int columnDisplaySize = data.getColumnDisplaySize(i);// 默认的列的标题String columnLabel = data.getColumnLabel(i);// 获得列的模式String schemaName = data.getSchemaName(i);// 某列类型的精确度(类型的长度)int precision = data.getPrecision(i);// 小数点后的位数int scale = data.getScale(i);// 获取某列对应的表名String tableName = data.getTableName(i);// 是否自动递增boolean isAutoInctement = data.isAutoIncrement(i);// 在数据库中是否为货币型boolean isCurrency = data.isCurrency(i);// 是否为空int isNullable = data.isNullable(i);// 是否为只读boolean isReadOnly = data.isReadOnly(i);// 能否出现在where中boolean isSearchable = data.isSearchable(i);System.out.println(columnCount);System.out.println("获得列" + i + "的字段名称:" + columnName);System.out.println("获得列" + i + "的类型,返回SqlType中的编号:"+ columnType);System.out.println("获得列" + i + "的数据类型名:" + columnTypeName);System.out.println("获得列" + i + "所在的Catalog名字:"+ catalogName);System.out.println("获得列" + i + "对应数据类型的类:"+ columnClassName);System.out.println("获得列" + i + "在数据库中类型的最大字符个数:"+ columnDisplaySize);System.out.println("获得列" + i + "的默认的列的标题:" + columnLabel);System.out.println("获得列" + i + "的模式:" + schemaName);System.out.println("获得列" + i + "类型的精确度(类型的长度):" + precision);System.out.println("获得列" + i + "小数点后的位数:" + scale);System.out.println("获得列" + i + "对应的表名:" + tableName);System.out.println("获得列" + i + "是否自动递增:" + isAutoInctement);System.out.println("获得列" + i + "在数据库中是否为货币型:" + isCurrency);System.out.println("获得列" + i + "是否为空:" + isNullable);System.out.println("获得列" + i + "是否为只读:" + isReadOnly);System.out.println("获得列" + i + "能否出现在where中:"+ isSearchable);}} catch (SQLException e) {e.printStackTrace();}}}

C. Java反射 getFields和getDeclaredFields的区别

关于获取类的字段有两种方式:getFields()和getDeclaredFields()。我们先来看看这两者的区别吧:



具体编码如下:

我们先创建一个POJO

publicclassUser{
privatelongid;
privateStringname;

publicvoidsetId(longid){
this.id=id;
}

publicvoidsetName(Stringname){
this.name=name;
}

publiclonggetId(){
returnid;
}

publicStringgetName(){
returnname;
}
}

再来获取此类中的所有字段

Field[]fields=User.class.getDeclaredFields();

获取字段的名称

StringfieldName=field.getName();

获取字段的修饰符

intfieldValue=field.getModifiers();//如:private、static、final等

与某个具体的修饰符进行比较

Modifier.isStatic(fieldValue)//看此修饰符是否为静态(static)

获取字段的声明类型

field.getType();//返回的是一个class

与某个类型进行比较

field.getType()==Timestamp.class

获取指定对象中此字段的值

ObjectfieldObject=field.get(user);//user可以看做是从数据库中查找出来的对象
阅读全文

与java获取字段的类型相关的资料

热点内容
电商运营和程序员相比哪个有前途 浏览:231
美女助眠解压4小时 浏览:235
android打成jar包 浏览:539
苹果手机视频压缩不了 浏览:898
android菜单的使用 浏览:329
大量气胸肺压缩 浏览:214
什么app可以做财产险 浏览:225
压缩比多少加97 浏览:377
pdflinux宝典 浏览:311
怎么查看求生之路所有的服务器 浏览:665
为什么抖音总显示服务器维护 浏览:174
大疆机甲大师app叫什么 浏览:899
解压助眠越南采耳 浏览:39
视频流加密安全 浏览:379
视频加密课怎么录制 浏览:571
读名着有什么app 浏览:230
javajqgrid 浏览:70
苹果手机app是什么语言 浏览:68
四川会议直播系统源码 浏览:911
对称加密算法运行速度 浏览:867