【发布时间】:2016-06-30 20:35:22
【问题描述】:
如何在 print 语句中获取 premtive 变量数据类型。 tell 方法告诉变量的数据类型?
【问题讨论】:
-
请提供打印声明。
标签: java
如何在 print 语句中获取 premtive 变量数据类型。 tell 方法告诉变量的数据类型?
【问题讨论】:
标签: java
如果您正在调用类似的方法
System.out.printf("%d", 5);
那么System.out.printf 实际上并没有收到原始参数:可变参数是Object[] 类型,因此在这种情况下5 将自动装箱为Integer。
但是,formatter syntax documentation 中没有列出将在字符串中打印参数类型的标记。
您可以编写专门用于每种基本类型的重载方法:
String typeName(boolean _) { return "boolean"; }
String typeName(byte _) { return "byte"; }
String typeName(short _) { return "short"; }
String typeName(int _) { return "int"; }
String typeName(long _) { return "long"; }
String typeName(float _) { return "float"; }
String typeName(double _) { return "double"; }
String typeName(char _) { return "char"; }
然后您可以像这样调用它:
int a = 5;
float f = 4.5f;
System.out.print(typeName(a)); // outputs "int"
System.out.print(typeName(f)); // outputs "float"
【讨论】:
您不能对原始类型执行此操作,只能使用对象。
【讨论】:
您可以打印 Wrapper Type,而不是原始类型。希望这会有所帮助:
int i=5;
System.out.println(((Object)i).getClass().getName());
【讨论】:
对于任何对象x,您可以打印x.getClass().getName()
【讨论】: