问题
我有一些数据存储在文本文件中,它包含两个java.lang.String字符串:第一个包含了我的数据值,第二个是数据类型,例如,java.lang.Long、java.lang.Double等等。
那么,我如何构造包含我文本文件中给定类型的对象呢?
蹩脚的解决方案
对所有支持的一个很长的if-else-if扫描链,然后使用parse*(Integer.parseInt、Double.pareseDouble等)方法可以解决该问题。
为什么如此蹩脚?简单的说,因为想要加一种支持的类型就需要扩展if-else-if链,然后这将导致最终的代码过长和不易维护。
古怪的解决方案(funky solution)
使用可能的Java反射的力量。
Java代码
- ClassobjClass=Class.forName(type);
- Class[]prototype={String.class};
- Constructorctor=objClass.getConstructor(prototype);
- returnctor.newInstance(newObject[]{value});
那么,这4行代码做了什么呢?
我们通过type字符串(我数据文件中的第二个字符串)定义的类来构造一个Class的实例,然后我们通过唯一的一个字符串作为参数来获取它的构造方法,这里构造方法的签名由prototype变量来定义;最后,我们通过向构造方法传入一个字符串值来构造对象。
那么为什么它古怪呢?
首先,因为它用4行代码完成了我们蹩脚的解决方案所完成的代码,更古怪的是,它不仅可以构造Integer、Long和Double,同样可以使用字符串来构造任何类型的对象。
分享到:
相关推荐
虽然原始代码片段未完整展示如何从`AnsiString`获取子串,但通常可以先转换为C风格字符串再使用`strstr`或`strncpy`等函数来实现子串的获取。 以上就是从给定文件中提取并详细解析的关于“各种string类型转换”的...
当我们需要将这些原始类型的数组转换为字符串(String)形式时,通常是为了进行日志记录、输出展示或者与JSON等格式的数据交换。本篇文章将深入探讨如何将Java的原始数组类型转换为String形式,以及这个过程中的关键...
本文将详细介绍如何将一个`List<String>`类型的集合转换为`String[]`数组,并通过不同的方法来实现这一过程。这不仅有助于提高代码的可读性和效率,还能帮助开发者更好地理解和运用Java集合框架。 #### 一、背景...
通过阅读和学习这些代码,开发者可以更好地理解和掌握Bitmap与String转换的实践方法。 总之,Android开发中Bitmap与String之间的转换是图像处理的关键步骤,涉及图像的保存、传输和加载等多个环节。理解并熟练运用...
在Android开发中,有时我们需要将文件转换为字符串(String)以便于在网络上传输或存储,同时也有时需要将字符串恢复为原始文件。Base64是一种常见的编码方式,它可以把二进制数据转换成ASCII字符串形式,同时又能...
在C#编程中,将`String`类型转换成任意基本类型是常见的操作,尤其是在处理用户输入、文件读取或网络通信等场景下。通常,我们需要根据业务需求将接收到的字符串数据转换为适当的类型,例如`int`、`long`、`double`...
本篇文章将详细介绍如何将一个`ILIST`集合转换为`String`数组,这对于理解.NET环境下的集合操作非常有帮助。 #### 一、背景介绍 在.NET框架中,`ILIST`接口是`System.Collections`命名空间中的一个通用接口,它...
使用`TypeNameHandling.All`设置可以保留类型信息,这对于反序列化时恢复原始类型很有用。 6. **其他数据类型转换**: `StringFormat`方法用于处理字符串、日期和布尔类型的格式化。例如,日期会被包裹在引号中,...
1. **类型安全**:在转换时确保正确地处理类型转换,例如使用 `(String[])` 显式地将数组转换为 `String[]`。 2. **性能考量**:频繁地进行数组和列表之间的转换可能会对性能造成影响,特别是在处理大量数据时。 3. ...
这个TypeHandler实现了将String转换为CLOB并插入数据库,以及从CLOB读取回String。 4. **在Mapper XML文件中使用** 在Mapper的XML文件中,确保在CLOB类型的字段上使用了正确的TypeHandler,例如: ```xml ...
第三种方法是先将 `long` 类型的值转换为 `String`,然后再通过 `Integer.parseInt()` 将字符串解析为 `int`。这种方法比较间接,但可以避免直接转换时的溢出异常。不过,如果原始 `long` 值超出 `int` 范围,`...
装箱是将原始类型转换为对应的封装类型,拆箱则是相反的过程。 - 装箱是将`byte`, `short`, `char`, `int`, `long`, `float`, `double`转换为`Byte`, `Short`, `Character`, `Integer`, `Long`, `Float`, `Double`...
#### 三、从String转换为Date 从字符串转换为日期通常需要指定一个日期格式。例如,在给定文件中,有两种不同的日期格式:“yyyy-MM-dd”和“yyyyMMddHH時mmss”。下面详细介绍这两种情况: ##### 1. 使用“yyyy-...
4. `String()`: 把任何值转换为字符串。 5. `Object()`: 把任何值转换为对象,如果已经是对象,则返回原对象。 6. `JSON.stringify()`: 对象转JSON字符串。 在实际开发中,理解并掌握这些转换规则至关重要,因为...
当你在C#代码中使用`string`时,编译器会将其自动转换为`System.String`。这一过程被称为“类型别名”,它的主要目的是为了简化开发者的编码体验,使得代码更加简洁易读。然而,如果你直接使用`String`,则不需要...
- `AnsiToUnicode`: 将ANSI字符串转换为Unicode字符串,根据系统默认的代码页。 - `Utf8ToUnicode`: 将UTF-8字符串转换为Unicode字符串。 - `UnicodeToUtf8`: 将Unicode字符串转换为UTF-8字符串。 6. **注意...
3. **使用Parse()和TryParse()方法**:这些方法用于将字符串转换为特定类型的数值。`Parse()`会在字符串不能解析时抛出异常,而`TryParse()`则会返回一个布尔值表示是否成功,并通过引用参数返回转换后的值。 ```...
String()是一个全局函数,它可以在不改变原始数据类型的情况下,将任何类型的值转换为字符串。对于null和undefined这两个特殊值,String()函数也能正确地将它们转换为字符串:"null"和"undefined"。这意味着String()...
例如,将一个double类型的值转换为int类型时,需要使用强制类型转换,语法上表现为:`(type) value`,其中`type`是要转换的目标类型,`value`是要转换的原始值。 #### 字符串与数值类型的转换 Java提供了多种方法来...
首先使用`Split(' ')`方法按照空格对字符串进行分割,然后通过`Select`操作符将分割后的字符串转换为字节类型的序列,最后使用`ToArray`方法将其转换为数组形式。这种方法适用于需要将文本数据转换为二进制数据的...