如何在Java中将变量从一个类传递到另一个类?

时间:2013-08-08 05:05:11

标签: java

我有两个名为x.javay.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,因为它无法识别。

所以我的问题是,如何将变量从类传递到另一个?

感谢。

6 个答案:

答案 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)

你有很多方法。正确的一个取决于您使用的对象模型的结构。

但是,您必须了解两个基本概念:

1。什么是“交叉点”。

为了让A的实例(称之为a1)能够与B的实例(b1)进行通信,a1必须有办法“把他的手”放在b1的引用上。一些示例方法是:

  • 每个A获取对B实例的引用作为其构造函数或其他“set”方法的参数,然后将其存储为为此目的而创建的字段。
  • a1b1共享班级C的常见实例。 c可以是a1b1的'父级'(即包含它们),也可以是管理程序中某个流程的“管理员”组件。
  • static \ singleton方式。 B类存储自身的静态实例,允许从程序中的任何位置引用它。

2。什么是所需的通信接口

一个类暴露给其他人的接口应该设计得很好,以实现许多重要的概念,例如:代码的可读性,安全性和“隐藏性”,可靠性等。这也取决于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();