首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >此方法返回对象的哪个实例?

此方法返回对象的哪个实例?
EN

Stack Overflow用户
提问于 2015-05-29 13:19:06
回答 4查看 53关注 0票数 4

我编写了下面的方法,但是我需要找到object returned.Also的实例,我需要检查它是JSON类型还是其他返回的类型,那么这个方法有效吗?

代码语言:javascript
复制
public class DynamicObject {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        DynamicObject obj = new DynamicObject();

        if(obj.testObj() instanceof String)
            System.out.println("String");
        else if (obj.testObj() instanceof Array)
            System.out.println("Integer Array");
        else if (obj.testObj() instanceof Integer)
            System.out.println("Integer");


    }

    private Object testObj(){
        boolean test = false;
        String s= new String("test");
        Integer in[] = {1,2,3,4,5};
        if(test){
            return s;
        }else{
            return in;
        }
    }

}

这个case.If的实例应该是什么,我运行这个,那么控制台就不会显示任何东西。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-05-29 13:24:22

实例应该是Integer[]

代码语言:javascript
复制
else if (obj.testObj() instanceof Integer[])
            System.out.println("Integer Array");
票数 3
EN

Stack Overflow用户

发布于 2015-05-29 13:28:26

Java数组不是java.lang.reflect.Array的子类。

换句话说,整数数组无法通过测试。

代码语言:javascript
复制
(obj.testObj() instanceof Array)
票数 2
EN

Stack Overflow用户

发布于 2015-05-29 13:35:13

testObj()将返回一个整数数组,其类型在Java中被写入为Integer[]。在main()中,您只测试StringArrayInteger的实例,因此永远不会到达print语句。

如果要将第二个测试从Array更改为Integer[],它将按您的意愿工作:

代码语言:javascript
复制
else if (obj.testObj() instanceof Integer[])
    System.out.println("Integer Array");

使用obj.testObj() instanceof Array的原因是java.lang.reflect.Array类实际上不是Java数组的超类。根据JavaDoc页面,类“提供静态方法来动态创建和访问Java数组”--它不是数组本身,它只是创建和访问数组的实用工具。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30530695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档