栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何从String转换为基本类型或标准Java包装器类型

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何从String转换为基本类型或标准Java包装器类型

据我所知,没有什么可以替代您介绍的版本。您可以稍微简化一下(因为包装器类型均为all

final
),但是实际上您需要使用
if
switch
或散列来打开类。

我的建议是像上面这样编码。丑陋的代码 本身 仅是一个问题 如果您必须看一下的话。因此,将其放在实用程序方法中,不再赘述。


FWIW-这就是我简化方法的方式:

public static Object toObject( Class clazz, String value ) {    if( Boolean.class == clazz ) return Boolean.parseBoolean( value );    if( Byte.class == clazz ) return Byte.parseByte( value );    if( Short.class == clazz ) return Short.parseShort( value );    if( Integer.class == clazz ) return Integer.parseInt( value );    if( Long.class == clazz ) return Long.parseLong( value );    if( Float.class == clazz ) return Float.parseFloat( value );    if( Double.class == clazz ) return Double.parseDouble( value );    return value;}

这更简单,更有效。它等同于原始版本,因为类是全部,

final
并且因为规范指出
Class
对象的相等性是对象身份。

可以说,我们应该使用

<wrapper>.valueOf(String)
直接返回包装对象的方法。

我没有断言这不是很丑。但是“美”不是衡量代码质量的有用方法,因为它是主观的,并且因为它不能告诉您代码是否易于理解和/或维护。

更新

为了同样支持基本类型,请在

if
条件中添加相应的类;例如

    if (Boolean.class == clazz || Boolean.TYPE == clazz) {        return Boolean.parseBoolean(value);    }

现在可能已经到了点,在类型名称上执行String切换更为有效,尽管还需要考虑一些类型标识的棘手问题。(理论上,您可以有多个具有相同全名的类型,这些类型由不同的类加载器加载。我认为您需要在类加载器中“快速而轻松地播放”,以使用原始包装器类来实现这一点……但是我认为仍然有可能。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446688.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号