java String类型对象转换为自定义类型对象的实现

 更新时间:2023年06月05日 10:56:27   作者:飞滕人生TYF  
本文主要介绍了java String类型对象转换为自定义类型对象的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

问题

java String类型对象转换为自定义类型对象

详细问题

对于java自定义类型对象提供了toString()方法,实现自定义类型对象转换为String类型对象,如何将String类型对象转换为自定义类型对象,譬如对于如下代码所定义的Class类

package com.iflytek.bms.domain;
import java.math.BigDecimal;
import java.sql.Timestamp;
public class Class {
    private Integer integer;
    private Double aDouble;
    private String string;
    private Timestamp timestamp;
    private BigDecimal bigDecimal;
    public Integer getInteger() {
        return integer;
    }
    public void setInteger(Integer integer) {
        this.integer = integer;
    }
    public Double getaDouble() {
        return aDouble;
    }
    public void setaDouble(Double aDouble) {
        this.aDouble = aDouble;
    }
    public String getString() {
        return string;
    }
    public void setString(String string) {
        this.string = string;
    }
    public Timestamp getTimestamp() {
        return timestamp;
    }
    public void setTimestamp(Timestamp timestamp) {
        this.timestamp = timestamp;
    }
    public BigDecimal getBigDecimal() {
        return bigDecimal;
    }
    public void setBigDecimal(BigDecimal bigDecimal) {
        this.bigDecimal = bigDecimal;
    }
    @Override
    public String toString() {
        return "Class{" +
                "integer=" + integer +
                ", aDouble=" + aDouble +
                ", string='" + string + '\'' +
                ", timestamp=" + timestamp +
                ", bigDecimal=" + bigDecimal +
                '}';
    }
}

解决方案

package com.iflytek.bms.domain;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Class {
    private Integer integer;
    private Double aDouble;
    private String string;
    private Timestamp timestamp;
    private BigDecimal bigDecimal;
    public Integer getInteger() {
        return integer;
    }
    public void setInteger(Integer integer) {
        this.integer = integer;
    }
    public Double getaDouble() {
        return aDouble;
    }
    public void setaDouble(Double aDouble) {
        this.aDouble = aDouble;
    }
    public String getString() {
        return string;
    }
    public void setString(String string) {
        this.string = string;
    }
    public Timestamp getTimestamp() {
        return timestamp;
    }
    public void setTimestamp(Timestamp timestamp) {
        this.timestamp = timestamp;
    }
    public BigDecimal getBigDecimal() {
        return bigDecimal;
    }
    public void setBigDecimal(BigDecimal bigDecimal) {
        this.bigDecimal = bigDecimal;
    }
    @Override
    public String toString() {
        return "Class{" +
                "integer=" + integer +
                ", aDouble=" + aDouble +
                ", string='" + string + '\'' +
                ", timestamp=" + timestamp +
                ", bigDecimal=" + bigDecimal +
                '}';
    }
    public static Class fromString(String str) {
        Class obj = new Class();
        Pattern pattern = Pattern.compile("Class\\{integer=(\\d+), aDouble=(\\d+\\.\\d+), string='(.*?)', timestamp=(.*?), bigDecimal=(\\d+\\.\\d+)\\}");
        Matcher matcher = pattern.matcher(str);
        if (matcher.matches()) {
            obj.setInteger(Integer.parseInt(matcher.group(1)));
            obj.setaDouble(Double.parseDouble(matcher.group(2)));
            obj.setString(matcher.group(3));
            obj.setTimestamp(Timestamp.valueOf(matcher.group(4)));
            obj.setBigDecimal(new BigDecimal(matcher.group(5)));
        }
        return obj;
    }
}

解决原因

笔者使用正则表达式和Java的Matcher类来实现从字符串到自定义类对象的转换,下面笔者将对fromString方法进行详细解析

1、创建一个新的Class对象:

Class obj = new Class();

作用:创建一个新的Class对象,用于存储从字符串中解析的属性值。

2、编译正则表达式并创建Pattern对象:

Pattern pattern = Pattern.compile("Class\\{integer=(\\d+), aDouble=(\\d+\\.\\d+), string='(.*?)', timestamp=(.*?), bigDecimal=(\\d+\\.\\d+)\\}");

使用正则表达式"Class\{integer=(\d+), aDouble=(\d+\.\d+), string='(.?)', timestamp=(.?), bigDecimal=(\d+\.\d+)\}"编译创建一个Pattern对象,用于匹配包含Class对象属性的字符串。

3、创建Matcher对象并进行匹配:

Matcher matcher = pattern.matcher(str);
if (matcher.matches()) {
  // 执行属性值的提取和设置
}

作用:使用创建的Pattern对象对输入的字符串str进行匹配,然后通过matcher.matches()方法判断是否匹配成功。

4、提取并设置属性值:

obj.setInteger(Integer.parseInt(matcher.group(1)));
obj.setaDouble(Double.parseDouble(matcher.group(2)));
obj.setString(matcher.group(3));
obj.setTimestamp(Timestamp.valueOf(matcher.group(4)));
obj.setBigDecimal(new BigDecimal(matcher.group(5)));

作用:如果匹配成功,通过matcher.group()方法提取匹配到的属性值,并将其转换为相应的类型(如整数、双精度浮点数、字符串等),然后使用对应的set方法将属性值设置到Class对象中。

5、返回解析后的Class对象:

eturn obj;

作用:返回经过解析后的Class对象。

请注意,在使用这段代码时,确保输入的字符串与正则表达式的格式匹配,并且属性值的类型与代码中的设置相匹配。如果输入的字符串不符合预期的格式,或者属性值的类型转换失败,可能会导致运行时异常。

到此这篇关于java String类型对象转换为自定义类型对象的实现的文章就介绍到这了,更多相关java String转换为自定义类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Security 自定义资源服务器实践过程

    Spring Security 自定义资源服务器实践过程

    这篇文章主要介绍了Spring Security 自定义资源服务器实践,我们通过自己搭建的授权服务器和资源服务器,完整体验了OAuth2流程,需要的朋友可以参考下
    2022-08-08
  • 在IntelliJ IDEA中为自己设计的类库生成JavaDoc的方法示例

    在IntelliJ IDEA中为自己设计的类库生成JavaDoc的方法示例

    这篇文章主要介绍了在IntelliJ IDEA中为自己设计的类库生成JavaDoc的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 利用feign调用返回object类型转换成实体

    利用feign调用返回object类型转换成实体

    这篇文章主要介绍了利用feign调用返回object类型转换成实体,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • java  HashMap和HashTable的区别详解

    java HashMap和HashTable的区别详解

    这篇文章主要介绍了java HashMap和HashTable的区别详解的相关资料,需要的朋友可以参考下
    2016-12-12
  • @PostConstruct在项目启动时被执行两次或多次的原因及分析

    @PostConstruct在项目启动时被执行两次或多次的原因及分析

    这篇文章主要介绍了@PostConstruct在项目启动时被执行两次或多次的原因及分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 基于JVM-jinfo的使用方式

    基于JVM-jinfo的使用方式

    这篇文章主要介绍了JVM-jinfo的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Mybatis-plus如何开启二级缓存

    Mybatis-plus如何开启二级缓存

    这篇文章主要介绍了Mybatis-plus如何开启二级缓存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 解读HttpServletRequestWrapper处理request数据流多次读取问题

    解读HttpServletRequestWrapper处理request数据流多次读取问题

    在Java Web开发中,获取HTTP请求参数是常见需求,本文详细讨论了通过POST方式获取参数的两种主要方法:使用request.getParameter()适用于application/x-www-form-urlencoded和multipart/form-data内容类型;而对于application/json类型的数据
    2024-10-10
  • 浅析Spring Boot单体应用熔断技术的使用

    浅析Spring Boot单体应用熔断技术的使用

    这篇文章主要介绍了浅析Spring Boot单体应用熔断技术的使用,帮助大家更好的理解和使用spirngboot框架,感兴趣的朋友可以了解下
    2021-01-01
  • Java Validation Api实现原理解析

    Java Validation Api实现原理解析

    这篇文章主要介绍了Java Validation Api实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09

最新评论