在 Java/Android 中,我是通过 Intent 还是使用 getters/setters 传递值?
In Java/Android, do I pass values through Intent or by using getters/setters?
我读到 getter 和 setter 不适合 Android 编程,当在创建它的同一个 class 中使用该方法时。
但是如果用在另一个class上会有什么负面影响吗?
我被告知不要使用很多静态变量,所以我正在寻找替代方法,使用 getters/setters 似乎比通过 Intent 传递值更容易混淆。
那么这样做是不是很好的编码?
简而言之:
这是最糟糕的做法,如果你想在活动之间使用传递数据。Activity 应该 save/use 只有相关的数据,一旦 activity 完成数据将会丢失。如果您想将数据从一个 activity 传递到另一个,您必须使用 INTENT。
如果您谈论的数据应该服务于少数活动,并且它们来自 DB/Another 数据源。在这种情况下,这与 android 无关,数据应作为java
中的标准架构
希望有道理
只是为了让最重要的部分不受影响:你应该永远不要在Android中使用静态变量,除非你确切地知道你在做什么。否则你将造成内存泄漏和其他一系列问题。
如果你想将数据传递给另一个 Activity
你应该使用 Intents
.
方法调用总是有额外的开销。直接访问字段总是会更快。但这并不意味着您应该一起放弃 getters 和 setters。
例如看这个 class Example
:
public class Example {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public void doSomething() {
...
}
}
在 doSomething()
中,您应该直接使用该字段。在那里调用 getters 和 setters 是行不通的,因为每次调用都需要额外的开销。
如果您在另一个 class 中使用 Example
class,如下所示,您应该使用 getter 和 setter 方法:
Example instance = new Example();
instance.setText("some text");
...
String text = instance.getText();
创建字段 public 并像 instance.text
一样直接访问它是不好的。
BUT 任何现代设备都具有如此强大的计算能力,以至于方法调用产生的开销完全可以忽略不计。 The docs 声明你应该避免在性能关键的地方使用 getters 和 setters,但这条规则是从大多数 Android 手机有 128 MB RAM 的时候开始的。你应该遵守我上面解释的规则的主要原因只是一件事:编码风格。
您的首要任务应该始终是编写干净、可读和可维护的代码。
我读到 getter 和 setter 不适合 Android 编程,当在创建它的同一个 class 中使用该方法时。
但是如果用在另一个class上会有什么负面影响吗?
我被告知不要使用很多静态变量,所以我正在寻找替代方法,使用 getters/setters 似乎比通过 Intent 传递值更容易混淆。
那么这样做是不是很好的编码?
简而言之:
这是最糟糕的做法,如果你想在活动之间使用传递数据。Activity 应该 save/use 只有相关的数据,一旦 activity 完成数据将会丢失。如果您想将数据从一个 activity 传递到另一个,您必须使用 INTENT。
如果您谈论的数据应该服务于少数活动,并且它们来自 DB/Another 数据源。在这种情况下,这与 android 无关,数据应作为java
中的标准架构希望有道理
只是为了让最重要的部分不受影响:你应该永远不要在Android中使用静态变量,除非你确切地知道你在做什么。否则你将造成内存泄漏和其他一系列问题。
如果你想将数据传递给另一个 Activity
你应该使用 Intents
.
方法调用总是有额外的开销。直接访问字段总是会更快。但这并不意味着您应该一起放弃 getters 和 setters。
例如看这个 class Example
:
public class Example {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public void doSomething() {
...
}
}
在 doSomething()
中,您应该直接使用该字段。在那里调用 getters 和 setters 是行不通的,因为每次调用都需要额外的开销。
如果您在另一个 class 中使用 Example
class,如下所示,您应该使用 getter 和 setter 方法:
Example instance = new Example();
instance.setText("some text");
...
String text = instance.getText();
创建字段 public 并像 instance.text
一样直接访问它是不好的。
BUT 任何现代设备都具有如此强大的计算能力,以至于方法调用产生的开销完全可以忽略不计。 The docs 声明你应该避免在性能关键的地方使用 getters 和 setters,但这条规则是从大多数 Android 手机有 128 MB RAM 的时候开始的。你应该遵守我上面解释的规则的主要原因只是一件事:编码风格。
您的首要任务应该始终是编写干净、可读和可维护的代码。