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中判断输入对象类型的主要内容,如果未能解决你的问题,请参考以下文章

java如何判断对象属性是啥类型

JAVA怎样判断一个对象的类型

Delphi中避免使用ClassName判断对象的类型

Java基础 ----- 判断对象的类型

java中如何判断一个类类型是否具体类型

java 判断一个对象是值类型还是引用类型