黑马程序员技术交流社区

标题: try代码块中定义的变量,为什么不可被外部访问 [打印本页]

作者: 李会成    时间: 2013-2-1 18:27
标题: try代码块中定义的变量,为什么不可被外部访问
本帖最后由 李会成 于 2013-2-2 13:56 编辑

今天写反个射的时候,出现个问题,在try中定义了一个变量,在外面无法使用它,如下:
public class ReflectControlPerson {

        /**
         * @param args
         */

        
        public Object getInstance(String className,String paraNameS,int paraNameI)
        {
                 
                try {
                        
                        Constructor con = Class.forName(className).getConstructor(String.class,int.class);
                        
                        
                } catch (Exception e) {
                        
                        e.printStackTrace();
                }
               
                return  con.newInstance(paraNameS,paraNameI); //此处con未定义
        
        }
无奈我只有在try外部定义了一个obj ,在把con.newInstance(paraNameS,paraNameI)结果赋值给obj

为什么在try内部定义的不许给外部使用呢??多麻烦啊
作者: 李跃达    时间: 2013-2-1 18:54
因为try块中定义的变量可能会抛出异常,一旦抛出异常就会跳转到catch或者其他的处理块中,这样等于这个变量没有定义,自然别的代码无法访问try块中定义的变量了
作者: 黄锦成    时间: 2013-2-1 19:43
con作为局部变量,定义在哪个范围内,就只能在哪个范围内访问。有些语言是就可以访问,但在java就不行,如果能访问,会变得很麻烦
作者: 陈科宇    时间: 2013-2-1 22:48
其实这个只是java语法的规则,try块内定义的对象,只在该块里有效。
作者: 冯佩    时间: 2013-2-1 23:27
这就是局部变量的局限性了,这是java中的语法规则。
作者: 铿锵科技    时间: 2013-2-2 00:00
不在管核范围
作者: 逍林游    时间: 2013-2-2 10:38
try中的代码块定义的变量作用范围仅仅在两个花括号之间,java语法规则!
作者: 逍林游    时间: 2013-2-2 10:38
try中的代码块定义的变量作用范围仅仅在两个花括号之间,java语法规则!
作者: 李培根    时间: 2013-2-18 11:33
请勿复制他人帖子,技术分不是入学的门槛而是为了帮助大家学习而存在的。

请勿再次发此类帖子了!

此贴就关闭了。此后如有再次发现直接封禁处理,请看到此贴的会员也加以注意。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2