我有两个名为x.java
和y.java
的java类。
在x.java
我有一个受保护的方法:
protected ResultSet populateSpeciesList(ResultSet results)
在这个受保护的方法中,我有一个if语句:
if (fsTitle != null)
{
sp.setFireStudyTitle("Available");
String sppAcronym = results.getString("ACRONYM");
FireStudyQueryBuilder qb = new FireStudyQueryBuilder();
this.magicString = qb.buildMagicString();
}
现在在y.java
我有一个类似这样的方法:
String buildMagicString()
{
String sppAcronym = getAcronym();
String newQueryString = a bunch of SQL;
return newQueryString;
}
问题是,我不能在其他类中使用sppAcronym,因为它无法识别。
所以我的问题是,如何将变量从类传递到另一个?
感谢。
答案 0 :(得分:3)
你能不能像下面那样重写你的方法buildMagicString()?
String buildMagicString(String sppAcronym) //This allows the caller to pass a argument to this method.
{
System.out.println(sppAcronym); //This statement will compile because sppAcronym is a valid member of this method.
String newQueryString = a bunch of SQL;
return newQueryString;
}
然后你只需按如下方式调用方法:
if (fsTitle != null)
{
sp.setFireStudyTitle("Available");
String sppAcronym = results.getString("ACRONYM");
FireStudyQueryBuilder qb = new FireStudyQueryBuilder();
this.magicString = qb.buildMagicString(sppAcronym); //Passes the sppAcronym object to the buildMagicString() method.
}
答案 1 :(得分:2)
在方法中传递您的变量,如下所示
this.magicString = qb.buildMagicString(sppAcronym);
和你另一个人的方法是
String buildMagaicString(String sppAcronym){
//do whatever you want with sppAcronym
return yourDesiredResult;
}
答案 2 :(得分:1)
这是一个提示:
String buildMagicString (String sppAcronym) {
...
}
从那里开始,它非常简单 - 与results
传递给populateSpeciesList()
的方式完全相同。
答案 3 :(得分:0)
您不能仅在其他类中使用 sppAcronym 变量,因为它是局部变量。实际上你甚至不能在同一个类的其他地方使用它,它的范围只驻留在指定的方法中。如果您确实需要在其他类中使用该变量值,请将其声明为私有字段,然后通过getter和setter进行访问。
答案 4 :(得分:0)
你有很多方法。正确的一个取决于您使用的对象模型的结构。
但是,您必须了解两个基本概念:
为了让A
的实例(称之为a1
)能够与B
的实例(b1
)进行通信,a1
必须有办法“把他的手”放在b1
的引用上。一些示例方法是:
A
获取对B
实例的引用作为其构造函数或其他“set”方法的参数,然后将其存储为为此目的而创建的字段。a1
和b1
共享班级C
的常见实例。 c
可以是a1
和b1
的'父级'(即包含它们),也可以是管理程序中某个流程的“管理员”组件。static
\ singleton
方式。 B
类存储自身的静态实例,允许从程序中的任何位置引用它。一个类暴露给其他人的接口应该设计得很好,以实现许多重要的概念,例如:代码的可读性,安全性和“隐藏性”,可靠性等。这也取决于A
和{ {1}}存储在同一个包中,或者是彼此的内部类,或者甚至是彼此继承的。
一些标准的沟通方式是:
B
中的字段B
被曝光,并允许直接写入其中。这主要是一种不良行为(根据经验,如果不是public
,所有字段应至少为protected
。private
方法:set
有一个set方法,用于接收计算出的数据,对其进行处理并将其存储在其字段中(或传递给它)。B
将计算出的数据存储在自身中,并通过调用其中的适当方法让所有已注册的“侦听器”知道新数据可用。侦听器具有对相关字段的读访问权,或者数据作为参数传递,然后侦听器(A
)决定如何处理数据。答案 5 :(得分:-1)
最方便的方法是将sppAcronym
作为私有变量并提供相同的公共setter和getter,这样你就可以创建y.java类的对象,如
y obj=new y();
并在x.java中使用setter和getter 一个例子可以是: -
y.java中的
private String sppAcronym;
public void setsppAcronym(String sppAcronym)
{
this.sppAcronym=sppAcronym;
}
public String getsppAcronym()
{
return sppAcronym;
}
x.java中的
y obj=new y();
obj.setsppAcronym(getAcronym);
String sppAcronym=obj.getsppAcronym();