如何在不同的java文件中使用setter和getter

如何在不同的java文件中使用setter和getter,java,android,Java,Android,这是我在ShoppingListName.java中的setters和getter public class ShoppingListName { private String shoppingListName; public String getShoppingListName() { return shoppingListName; } public void setShoppingListName(String shoppingListN

这是我在ShoppingListName.java中的setters和getter

public class ShoppingListName {
    private String shoppingListName;

    public String getShoppingListName() {
        return shoppingListName;
    }

    public void setShoppingListName(String shoppingListName) {
        this.shoppingListName = shoppingListName;
    }
}
我是在MainMenu.java中完成的

ShoppingListName shoppingList = new ShoppingListName();
shoppingList.setShoppingListName(inputListName.getText().toString());
我试图将字符串传递到另一个java文件(CreateList.java) 我该怎么做

我试过这个

ShoppingListName shoppingList = new ShoppingListName();
Log.e("ShoppingListName", "" + shoppingList.getShoppingListName());
但是很明显,我收到了一个空返回。

您可以将getter和setter方法设置为static,然后您使用的最后一个调用就可以工作了。然后,如果流是在set方法之后调用get方法,则不必显式地传递任何内容

因此,有效地,您可以在任意多个其他类之间共享单个实例

我试图将字符串传递到另一个java文件 (CreateList.java)我该怎么做

这里您的意思大概是希望将
字符串
传递给类
CreateList
中定义的方法

因此,只需在
CreateList
上创建一个方法,该方法接受
字符串,并执行它需要执行的任何操作

public class CreateList {

    public static void doSomething(String listName) { 
       //do whatever you want with it
    }
}
作为旁注,您的类ShoppingListName似乎没有对任何有意义的真实世界对象建模。把它改为:

public class ShoppingList {

    List<ShoppingItems> items;
    String listName;
 ..   
 ..
}
公共类购物清单{
清单项目;
字符串列表名;
..   
..
}

这同样适用于
CreateList
。此对象的主要职责是什么?

ShoppingListName
主菜单中的类实例。java
CreateList.java
中的实例不同。显然,
CreateList.java
中的新实例无法获得您在
main menu.java
中的实例中设置的值。您必须以某种方式将实例从
main menu.java
传递到
CreateList.java
,或者在两个类之间共享同一个实例。

*Getter Setter Class

}

设置值 ShoppingListName.setShoppingListName(“需要设置的值”)

获取值 字符串值=ShoppingListName.getShoppingListName()*

更新

正如@laalto在评论中提到的那样。使用静态参数分离pojo类以存储一定范围的数据并不是完美的解决方案

根据我的说法,如果您想长时间保存数据,请将其保存在共享首选项中,否则请在应用程序类中创建一个非静态变量,并像这样使用

public class HelloApplication extends Application {
        private int globalVariable=1;

        public int getGlobalVariable() {
                return globalVariable;
        }

        public void setGlobalVariable(int globalVariable) {
                this.globalVariable = globalVariable;
        }
        @Override
        public void onCreate() {
                //reinitialize variable
        }
}
在你的活动中,这样做

(HelloApplication)getApplication()).setGlobalVariable(10);
int valiable=((HelloApplication)getApplication()).getGlobalVariable();
请尝试以下代码:

public class ShoppingListName extend Application{
    private String shoppingListName;

    public String getShoppingListName() {
        return shoppingListName;
    }

    public void setShoppingListName(String shoppingListName) {
        this.shoppingListName = shoppingListName;
    }
}
在Android Manifest.xml中:

<application
    android:name="yourPacket.ShoppingListName"
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="yourPacket.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

我建议您使用
依赖注入
,因为它有助于更好的程序结构。它被否决了吗?你应该给出否决投票的理由。使用
静态
var是解决问题的糟糕方法,并且只有在只有一个
ShoppingList
实例的情况下,它才能正常工作。这可能是某人被否决的原因。我不会经常这样使用,但对于他的情况,我认为这会很好。你能详细说明你的陈述吗?你能建议或发布更好的解决方案吗@拉阿尔托
<application
    android:name="yourPacket.ShoppingListName"
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="yourPacket.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
ShoppingListName shoppinglistname = (ShoppingListName) MainMenu.this.getApplicationContext();
// Now you can get and set shoppinglistname object