A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李会成 于 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内部定义的不许给外部使用呢??多麻烦啊

8 个回复

倒序浏览
因为try块中定义的变量可能会抛出异常,一旦抛出异常就会跳转到catch或者其他的处理块中,这样等于这个变量没有定义,自然别的代码无法访问try块中定义的变量了
回复 使用道具 举报
con作为局部变量,定义在哪个范围内,就只能在哪个范围内访问。有些语言是就可以访问,但在java就不行,如果能访问,会变得很麻烦
回复 使用道具 举报
其实这个只是java语法的规则,try块内定义的对象,只在该块里有效。
回复 使用道具 举报
这就是局部变量的局限性了,这是java中的语法规则。
回复 使用道具 举报
不在管核范围
回复 使用道具 举报
try中的代码块定义的变量作用范围仅仅在两个花括号之间,java语法规则!
回复 使用道具 举报
try中的代码块定义的变量作用范围仅仅在两个花括号之间,java语法规则!
回复 使用道具 举报
请勿复制他人帖子,技术分不是入学的门槛而是为了帮助大家学习而存在的。

请勿再次发此类帖子了!

此贴就关闭了。此后如有再次发现直接封禁处理,请看到此贴的会员也加以注意。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马