美文网首页Java 杂谈技术干货程序员
为什么有时候object能强转成Integer,有时候不行,如何

为什么有时候object能强转成Integer,有时候不行,如何

作者: 迷雾中行走 | 来源:发表于2018-01-23 09:41 被阅读0次

    问题来源:有时我们用Map map方式传参,当我们要对参数进行操作时会发现,有时候object能强转成Integer,有时候不行。

    举例:

    public class Show {

        public static void main(String[] args) throws ParseException {

            Integer  integer = new Integer(1);

            String  string = "2";

            Show show = new Show();

            Map param = new HashMap<>();

            show.change(param);

        }

        public  void change(Map args){

            Integer  integer = (Integer) args.get("integer");

            Integerstring = (Integer) args.get("string");

        }

    }

    原因:object类型的参数也是有格式的,以Integer或String类型放入Map map传参,得到的也是Integer或String类型。这就导致本来就是Integer类型的,可以强转为Integer类型(如 Integer  integer = (Integer) args.get("integer");),

            而本来是String类型的,就不能强转为Integer类型( Integerstring = (Integer) args.get("string"); ).虽然编译能通过,但是运行的时候是会报java.lang.String cannot be cast to java.lang.Integer,这个错的。

            这是因为String类型是不能强转为Integer类型的。

    解决方法是:1:Integer string = Integer.parseInt(String.valueOf(args.get("string")));

                          2:Integer string = Integer.parseInt(args.get("string").toString());

    拓展:我们用request.getParameter(String name)时返回的是String 类型,用的时候要注意不要强转。

    相关文章

      网友评论

        本文标题:为什么有时候object能强转成Integer,有时候不行,如何

        本文链接:https://www.haomeiwen.com/subject/khgjaxtx.html