Java 在一节课上设置,从另一节课上获取
这是非常基本的我知道,但我只是不明白问题是什么。。。我所要做的就是将变量的值从一个类设置为一个“中间”类,并在第三个类中检索它(因为filterArray也将从其他类调用,我希望它们都读取相同的数据)。但如果我这样做:Java 在一节课上设置,从另一节课上获取,java,android,Java,Android,这是非常基本的我知道,但我只是不明白问题是什么。。。我所要做的就是将变量的值从一个类设置为一个“中间”类,并在第三个类中检索它(因为filterArray也将从其他类调用,我希望它们都读取相同的数据)。但如果我这样做: b =new GetSet() b.setBdl(extras); JSONArray arr= getData.filterArray(); 使用 然后在filterArray方法中,如果我尝试 Bundle params = new GetSet().ge
b =new GetSet()
b.setBdl(extras);
JSONArray arr= getData.filterArray();
使用
然后在filterArray方法中,如果我尝试
Bundle params = new GetSet().getBdl();
我会遇到各种各样的运行时错误,如果我尝试
Bundle params = GetSet.getBdl();
它告诉我不能对非静态方法进行静态引用。
我哪里出错了?您应该将
b
传递给filterray
方法。
首先更改filterary
以获取一个类型为GetSet
的参数:
public JSONArray filterArray(GetSet b)
然后,像这样称呼它:
getData.filterArray(b);
而在过滤器阵列内部
只需使用:
Bundle params = b.getBdl();
问题是,您创建了一个对象并设置了一个值,然后需要从相同的对象中获取值
当使用对象时,您可以创建任何类别的新对象,设置其内部值,当您从不同位置访问同一对象时,内部值将是相同的(我在这里讨论的是GetSet
和getData
)
另一种选择是使用静态值(以及静态getter和setter),如果该值对于类的所有对象都相同。这通常不需要,并且可能由于设计不好而使用。在您的情况下,您并不真正需要它,但它会起作用。错误是因为您以错误的方式使用它 看看你的getBdl签名,它是一个公共的
Bundle
method,它是一个非静态的方法,所以不能被类名访问
它应该通过bean对象b访问
第二个错误也是相关的
您使用对象b编写/设置了bean的属性,但是当您访问它时,您再次创建了一个新的GetSet().getBdl,因此它显示Null指针异常
你喜欢这个吗
GetSet b=新的GetSet();
b、 setBdl(束对象)
现在b包含了这个值
通过b
因此,如果需要从另一个类访问bundle,请将b传递到它的构造函数中,并从它们的构造函数中获取它
SomeClass=新的SomeClass(b);
现在,在这个类中,你可以通过b获得捆绑包
希望这一切都能对你有所帮助。你很困惑你想做什么?你创建了一个新的GetSet,然后你在filterArray中说你创建了一个新的GetSet?很困惑。我试图从GetSet类中获取参数。但是如果我不包含new关键字,它会告诉我我不能对非静态方法进行静态引用。如果有,我也很困惑这是重点,因为稍后,从另一个方法中,我希望能够调用filterarray方法而不传递b(因为b已经被设置)我希望filter数组能够从GetSet类中获取b。您可以创建一个新的
getData
对象,并将b
设置为内部值。另一个选项是“如果所有GetSet对象的值相同,则可以对param(以及getter和setter)使用static”但这是一个非常糟糕的设计。不,它总是在变化,这就是问题所在。我如何将b设置为内部值?您是否编写了getData类?这样您就可以向b添加b值以及getter和setter,就像您在GetSet
类中使用Bundle
所做的那样。然后,您需要再次确保访问getDa的同一对象ta来自各个地方。我不知道我是否在关注,但我认为这是我的问题…有时我可以将b传递到filterArray,但有时我会依赖于它已经被设置。我仍然不关注如何设置内部值。抱歉,我不太了解-我对java很陌生。但是如果该方法已经设置,b是否仍然存在完成了,我现在从一个不同的类调用它(我想我应该测试一下,看看)?看,即使这个方法已经完成了,你也把bean对象传递给了其他的类构造函数,这样b就可以生存,你就可以访问它的方法了。。。
Bundle params = b.getBdl();