我想传递类之间的String值都是相同的包。所以我创建了类似代码的类:
public class Map_Delegate {
String myLatitude;
String myLongitude;
String myName;
private String TAG = "Map_Delegate";
public String getMyName() {
return this.myName;
}
public void setMyName(String value) {
Log.v(TAG, value);
this.myName = value;
}
public String getMyLatitude() {
return this.myLatitude;
}
public void setMyLatitude(String value) {
Log.v(TAG, value);
this.myLatitude = value;
}
public String getMyLongitude() {
return this.myLongitude;
}
public void setMyLongitude(String value) {
Log.v(TAG, value);
this.myLongitude = value;
}
}
但它无法传递价值。我像这段代码一样设置了值:
Map_Delegate map = new Map_Delegate();
map.setMyName(first_name_temp + " " + last_name_temp);
map.setMyLatitude(homeLatitude_temp);
map.setMyLongitude(homeLongitude_temp);
获取值的代码:
Map_Delegate map = new Map_Delegate();
name_val = getMyName();
lat_val = getMyLatitude();
long_val = getMyLongitude();
为什么你能猜到Null值?同一个包中的所有类和public .AnyIdea?
答案 0 :(得分:5)
好吧,您可以在Map_Delegate
的一个实例上设置值。稍后您创建一个新的空白实例并检索其值。当然他们是空的。您需要引用之前填充的同一个对象,而不是创建一个新对象。
答案 1 :(得分:3)
我不确定我完全理解你在做什么,但是从你写的内容看起来你每次都在创建一个新的Map_Delegate。因此,您创建一个对象并设置值,然后创建另一个对象并尝试获取值(但通过创建新对象,值初始化为null)。你应该调用get你最初创建的对象,这需要持有对它的引用并将它传递到任何需要的地方。
或者,您可能正在尝试实现Singleton设计模式。使用Singleton设计模式意味着只有一个给定类的实例,因此您不需要传递引用,只需再次调用getInstance即可获得它。基本上要为你的情况实现单身,你会这样做:
public class Map_Delegate {
private static Map_Delegate instance;
private Map_Delegate() {
// Private constructor so nobody can create an instance of your class.
}
public static Map_Delegate getInstance() {
if (instance == null) {
instance = new Map_Delegate();
}
return instance;
}
// All the rest of your code can go here.
}
现在你可以做到:
Map_Delegate a = Map_Delegate.getInstance();
a.setMyName("Name");
// Whatever else.
然后你可以这样做:
Map_Delegate b = Map_Delegate.getInstance();
String name = b.getMyName();
并且名称不会为null,因为您使用的是之前的相同实例。
答案 2 :(得分:0)
您正在创建两个map_delegate实例的空值的原因。新的instnace具有属性的空值(除非您指定默认值 - 这里不是这种情况。)您在第一个实例上设置值,但从第二个实例检索 - 第二个实例是新构造的,具有空值。
我会避免单身模式。相反,请确保您的代码将相同的实例传递给需要它们的部分。考虑你想用map_delegate做什么,然后添加一种传递适当委托的方法 - 通常作为属性或构造函数给协作者。
答案 3 :(得分:0)
Map_Delegate map = new Map_Delegate();
map.setMyName(first_name_temp + " " + last_name_temp);
map.setMyLatitude(homeLatitude_temp);
map.setMyLongitude(homeLongitude_temp);
String name_val;
String lat_val;
String long_val;
name_val = map.getMyName();//<-Not Null
lat_val = map.getMyLatitude();//<-Not Null
long_val = map.getMyLongitude();//<-Not Null
map = new new Map_Delegate();//Another memory area is newly generated.
name_val = map.getMyName();//<- Null
lat_val = map.getMyLatitude();//<- Null
long_val = map.getMyLongitude();//<- Null