如何在两个java文件中使用相同的字符串

时间:2011-10-16 12:48:10

标签: java string

抱歉我的英语不好,也许是愚蠢的问题,但我是Java新手。

我需要在2个java文件中使用相同的字符串,例如:

在第一个java文件中,我有用于发送电子邮件的代码,我已将字符串设置为默认电子邮件:

public String mail = new String ("lala@gmail.com");

我在代码中使用此字符串发送电子邮件:

email.addTo(mail);

在第二个java文件中设置的地方可以在用户设置新的电子邮件地址我希望有相同的字符串,在第一个java文件中用字符串连接。当用户输入新邮件时,String邮件将更改为新的电子邮件地址并在email.addTo(邮件)中;将使用这个新地址

我该怎么做?

4 个答案:

答案 0 :(得分:2)

使用共享首选项,您可以将其存储为键值对。值是您的电子邮件,密钥可以是您想要识别它的任何唯一字符串。

答案 1 :(得分:1)

我对这个问题有点困惑,但我会捅它。基本上,您希望在给定文件中将一个String用于多个位置。这可以使用类级变量轻松完成,并使其可公开访问。

例如,在文件中:

<强> EmailObject.java

public class EmailObject {

    public static final String mail = "lala@gmail.com";

    // The rest of your code
}

另一个文件可以这样访问:

<强> OtherObject.java

public void sendEmail() {
     EmailMessage email = new EmailMessage();
     email.addTo(EmailObject.mail);
}

请注意原始版本上的staticfinal修饰符。这确保您不需要EmailObject的实际实例来访问该字符串,并且还确保该字符串永远不会被其他对象意外修改。

当然,还有其他方法可以做到这一点,但这个方法最符合你的代码。这也是一个非常&#34; Java&#34;解。 Android还有其他方式来共享数据(如另一个答案所示)。

答案 2 :(得分:0)

我不建议最简单的方法是使用公共静态字段:

class A {
   public static String commonString;
}

class B {

   public void methodThatUsesString () {
      // Do stuff with the string
      Log.d("I have the string", A.commonString);
   }
}

如果您有两个活动,一个启动另一个活动,您可以通过Intents发送数据。

前面提到的SharedPreferences方式也是一个很好的解决方案,如果电子邮件地址是一个持久性的东西,如果你愿意的话是一个偏好,而不仅仅是操作所需的数据。

您可以在另一个实体中保留一个类实例的引用,并通过它访问它的字段:

class A {
   public String commonString;
}

class B {
   private final A instaceOfA;

   public B (A instanceOfA) {
      this.instanceOfA = instanceOfA;
   }

   public void methodThatUsesString () {
      // Do stuff with the string
      Log.d("I have the string", instanceOfA.commonString);
   }
}

如果性能不是问题,甚至可以使用getter或setter。

答案 3 :(得分:0)

许多答案取决于字符串的使用方式。

  • 如果它是一个永远不会改变的常量字符串,则永远不要使用最终的静态字符串

    public final static String AUTHOR_MAIL =“lala@gmail.com”;

然后您可以在任何地方以静态方式使用它。

email.addTo(MyClass.AUTHOR_MAIL);

  • 如果此String将在不同的Activity中使用,则无法直接访问它(您无法判断其他Activity是否仍处于活动状态)。您必须使用SharedPreferences等持久性机制,或直接在您的意图中发送所需数据。

  • 如果它位于Activity内的帮助器类中,则可以使用mObject.mail来获取它。