在编译时,注释在Android中的作用是什么?

时间:2014-12-12 07:58:48

标签: android

  1. @SuppressWarnings( “unsued”)
  2. @覆盖
  3. @SuppressLint({“InflateParams”,“SimpleDateFormat”})
  4. 我不明白为什么我们需要声明注释。

3 个答案:

答案 0 :(得分:1)

我们希望促进Android应用程序的编写和维护。

我们相信具有明确意图的简单代码是实现这些目标的最佳方式。

Robert C. Martin写道:

读取[代码]与写入所花费的时间比例远远超过10比1 [因此]使其易于阅读使其更容易编写。 虽然我们都喜欢开发Android应用程序,但我们常常想:为什么我们总是需要一遍又一遍地编写相同的代码?为什么我们的应用程序难以维护? Context和Activity上帝对象,玩弄线程的复杂性,难以发现API,匿名监听器类的负载,大量不需要的演员......我们不能改进吗?

如何吗

使用Java注释,开发人员可以展示他们的意图,让AndroidAnnotations在编译时生成管道代码。

功能

依赖注入:注入视图,附加功能,系统服务,资源,...... 简化的线程模型:注释您的方法,以便它们在UI线程或后台线程上执行。 事件绑定:注释处理视图事件的方法,不再是丑陋的匿名监听器类! REST客户端:创建客户端界面,AndroidAnnotations生成实现。 没有魔力:由于AndroidAnnotations在编译时生成子类,您可以检查代码以查看它是如何工作的。 AndroidAnnotations提供了那些好东西,甚至更少,不到50kb,没有任何运行时性能影响!

您的Android代码是否易于编写,阅读和维护?

看那个:

@EActivity(R.layout.translate) // Sets content view to R.layout.translate
public class TranslateActivity extends Activity {

    @ViewById // Injects R.id.textInput
    EditText textInput;

    @ViewById(R.id.myTextView) // Injects R.id.myTextView
    TextView result;

    @AnimationRes // Injects android.R.anim.fade_in
    Animation fadeIn;

    @Click // When R.id.doTranslate button is clicked 
    void doTranslate() {
         translateInBackground(textInput.getText().toString());
    }

    @Background // Executed in a background thread
    void translateInBackground(String textToTranslate) {
         String translatedText = callGoogleTranslate(textToTranslate);
         showResult(translatedText);
    }

    @UiThread // Executed in the ui thread
    void showResult(String translatedText) {
         result.setText(translatedText);
         result.startAnimation(fadeIn);
    }

    // [...]
}

答案 1 :(得分:0)

Java注释绑定特定条件以满足代码。考虑一个场景,我们认为我们正在从anther类中覆盖一个方法,并且我们实现了(我们认为)覆盖该方法的代码。但是如果我们错过了完全覆盖一个(例如我们拼写错误的名字。在超类中它是" mMethodOverridden"我们输入" mMethodoverridden")。该方法仍然可以编译和执行,但它不会做它应该做的事情 所以@Override是我们告诉Java如果我们做正确的事情让我们知道的方式。如果我们用@override注释一个方法并且它没有覆盖任何东西,编译器会给我们一个错误 其他注释以非常类似的方式工作。

有关详细信息,请参阅文档Lesson: annotations

答案 2 :(得分:0)

注释基本上是可以添加到Java源代码的语法元数据。可以注释类,方法,变量,参数和包。

元数据是关于数据的数据

为什么要引入注释?

在注释之前(甚至之后),XML被广泛用于元数据,并且某种特定的应用程序开发人员和架构师认为XML维护变得很麻烦。他们想要的东西可以与代码紧密结合,而不是XML,它与代码非常松散耦合(在某些情况下几乎是分开的)。如果你谷歌“XML与注释”,你会发现很多有趣的辩论。有趣的是,引入了XML配置以将配置与代码分开。最后两个陈述可能会在你的脑海中产生怀疑,这两个是创造一个循环,但两者都有其优点和缺点。

例如:

@覆盖

它指示编译器检查父类是否匹配方法。