Java中同一个类下一个方法怎样访问另一个方法下的变量

我的定义如下publicclassSearchDaoImplextendsHibernateDaoSupportimplementsSearchDao{publicLis... 我的定义如下
public class SearchDaoImpl extends HibernateDaoSupport implements SearchDao{
public List search_sim(String condition){
try{
String sql;
//根据输入框中的查询条件
// List list = getHibernateTemplate().find("from Content where keyWord = ?",str);
Session session=getHibernateTemplate().getSessionFactory().openSession();
Transaction ts=session.beginTransaction();
Query query=session.createQuery("from Content where keyWord = ?");
query.setParameter(0,condition);
sql="keyWord='"+condition+"'";
List list=query.list();
ts.commit();
session.close();
System.out.println(sql);
session=null;
return list;

}catch(Exception e){
e.printStackTrace();
return null;

}
}
public String getsql(){
String sql;

return null;

}

}

在后面这个getsql()方法里怎么访问前面那个方法public List search_sim(String condition)中的String类型的sql呢?
类中还有多个像public List search_sim(String condition)的其它方法,每个方法都会得到一个不同的sql。在下面的那个getsql()方法里获取不同方法里的sql.
展开
 我来答
斯欧康0Z
推荐于2017-09-25 · TA获得超过1416个赞
知道小有建树答主
回答量:558
采纳率:0%
帮助的人:293万
展开全部
在java中,一个方法中式不能够访问另一个方法中定义的变量的!
为什么?其实在java中,变量按照作用域主要分为两种:全局变量和具备变量!全局变量一般都是类的属性!局部变量一般都是写在方法中或者写在其他语句块中(如:循环语句块和switch语句块等)。
作为局部变量,他的作用域(或者说使用范围)仅仅只是在于,当前变量被定义的位置一直到这个变量所在语句块中的最后(也就是"}"所在位置)。
也就是说,在一个方法中定义的变量,仅仅只能在这个方法中才能够正常使用!在别的方法中是无法直接使用的!
所以,就你这个问题,给你一个解决办法,将这个变量设成一个属性!让这个变量成为一个全局的存在!
这样的话,你就能在这个类的方法中使用这个变量了!
友情提示一下:如果想直接在main函数中用(实际上也就是在使用的static修饰的方法中用),这个属性页必须被定义成static的!关于这个,你可以去看看static的用法!

大概知道你的意思了,你是想在不同的方法中对sql进行包装,然后通过统一的方式获得包装后的sql语句,而且这些sql语句之间还不能有影响!
其实,想法虽然是好的,但是实现起来可能会比较有难度!你去思考一个问题,你在getsql()方法中,如何设定逻辑,才能够自由的去调用你所写的public List search_sim(String condition)的其它方法?
而且,假使你能够实现,在一个方法中调用其他方法中定义的变量还是不现实的!要么把这个变量定义为全局的,要么把这个sql语句干脆设定为这个方法的返回值!
众态生态治理有限公司
推荐于2017-10-08 · TA获得超过1330个赞
知道小有建树答主
回答量:906
采纳率:66%
帮助的人:460万
展开全部

将那个方法放入另一个方法传入参数。

例如:输出0~9


public class Test1 {

public void print(int num){
System.out.println(num);
}

public void num(){
for (int i = 0; i < 10; i++) {
print(i);
}
}
public static void main(String[] args) {
new Test1().num();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Jseven_jy
2010-06-14 · TA获得超过8122个赞
知道大有可为答主
回答量:2499
采纳率:100%
帮助的人:1130万
展开全部
你让public List search_sim这个方法返回那个sql。。然后getsql()这个方法调用那个方法不就得到你想要的sql了吗。。其他方法也一样返回sql。。你想要哪个就调用哪个撒。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xmjid
2010-06-14 · TA获得超过159个赞
知道小有建树答主
回答量:273
采纳率:0%
帮助的人:167万
展开全部
定义为全局变量,然后把方法中的值赋给全局变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
成小檬
2010-06-14 · 超过21用户采纳过TA的回答
知道答主
回答量:109
采纳率:0%
帮助的人:33.9万
展开全部
一句通俗的话是:变量只能在它被声明的那个大括号里起作用,如果你真的要用,必须把它提出来,在总的类里边声明
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式