java中判断输入对象类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中判断输入对象类型相关的知识,希望对你有一定的参考价值。
想写个方法可以判断对象的. 比如输入sssss, 会输出 “这是个String” 输入123 会输出“这是个int”
既然输入的type不知道,该怎么定义呢,是不是需要用 insteadof 这个指令呢。 能不能讲一下思路是什么,我现在没什么头绪对这个方法。。。。Thank you。。。
首先,前提是不知道有哪些对象类型,以及其表现形式。
其次,2楼说的对,Java输入都是String。
因此,我们设计一下要做的事情:
1. 提供一组对象类型名称和判断方法的注册列表。
2. 对给定的String,按照注册列表中的判断方法逐一执行,假如有返回成功的,就打印“这是。。。”。
好了,这就是思路,假如要硬往设计模式上套,可以套Command Chain.
主要是判断方法,那么就把它定义成一个借口:
interface TypeStringChecker
String getTypeName () ;
boolean isInstanceOf (String textValue)
完美一点,利用所谓的工厂创建模式,可以使用反射机制,从配置文件里读出来类型名称,并创建实例: TypeStringChecker [] checkerList ;
检查时的代码:
CheckString (String textValue)
foreach checker in checkerList
if (checker.isInstanceOf (textValue))
print ("[" + textVaue + "] is instance of : " + chceker.getName ());
print ("Unsupported Type Or this is a String [" + textVaue + "] ) ;
比如编写一个整数的判断,就可以用:
boolean isInstanceOf (String text)
try
Integer.parseInt (text) ;
catch (Throwable e) return fasle ;
return true ;
进一步的,假设复杂一点的Point,表现形式是:x,y。那么就可以写一个类来判断。
可以参考WebWork中的类型转换器阿。
呵呵,有趣的问题。 参考技术A 你想用什么都行,但我知道现在java中出现了泛型这一概念,我就用泛型做吧!!希望与你有用。代码如下:
public class testGeneric
public static void main(String[] args)
System.out.println(getType(123));
System.out.println(getType("sssss"));
public static <T> String getType(T t)
if(t instanceof String)
return "string";
else if(t instanceof Integer)
return "int";
else
return " do not know";
/**
* 方法的泛型,否则的话就得用重载;
* 1、如果只指定了<?>,而没有extends,则默认是允许Object及其下的任何Java类了。也就是任意类。
2、通配符泛型不单可以向下限制,如<? extends Collection>,还可以向上限制,如<? super Double>
,表示类型只能接受Double及其上层父类类型,如Number、Object类型的实例。
3、泛型类定义可以有多个泛型参数,中间用逗号隔开,还可以定义泛型接口,泛型方法。这些都泛型类中泛型的使用规则类似。
*/本回答被提问者采纳 参考技术B jdk1.5以上原始数据类型会自动拆封箱,如果不判断原始数据类型就用JAVA的反射机制吧.下面是一段测试代码.
public static void main(String args[])
test("ssss");
test(123);
private static void test(Object obj)
System.out.println(obj.toString()+":"+obj.getClass().getSimpleName());
参考技术C "ssss".getClass().getName(); 参考技术D java控制台得到都是String型的 你要处理多少种类型??
Java基础 ----- 判断对象的类型
1、 判断对象的类型:instanceOf 和 isInstance
或者直接将对象强转给任意一个类型,如果转换成功,则可以确定,如果不成功,在异常提示中可以确定类型
public static void main(String[] args)
Integer i = new Integer(10);
System.out.println(i instanceof Integer); // 知道类型名
String parentClass = "java.lang.String";
try
Class<?> clazz = Class.forName(parentClass);
String str = new String("111");
System.out.println(str.getClass().isInstance(clazz.newInstance())); // 不知道类型名,动态加载类型名
catch (ClassNotFoundException | InstantiationException | IllegalAccessException e)
e.printStackTrace();
String str = "222";
System.out.println((Integer)str);
原文地址:https://blog.csdn.net/miracle_8/article/details/80404537 以上是关于java中判断输入对象类型的主要内容,如果未能解决你的问题,请参考以下文章