导航:首页 > 编程语言 > 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获取字段的类型相关的资料

热点内容
变压器厂程序员 浏览:222
pdf文字覆盖 浏览:187
苏联227命令 浏览:364
javacompress 浏览:234
程序员入股 浏览:672
java智能算法有哪些 浏览:835
加密锁可以多人登录么 浏览:537
气球无限解压 浏览:209
服务器安装怎么操作 浏览:717
zip小米手机怎么解压 浏览:188
云资料删除后服务器还有记录吗 浏览:953
kafkaserver源码解析 浏览:623
挂机脚本命令 浏览:47
vhdl编程软件 浏览:106
sparkjava编程 浏览:997
私活给源码吗 浏览:509
如何在虚拟机里安装服务器 浏览:841
vs2022如何编译c语言 浏览:75
自学数控车床编程 浏览:196
服务器地址一般在哪找 浏览:328