Android面试系列文章2018之Java部分注解篇

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ClAndEllen/article/details/79392453

Android面试系列文章2018之Java部分注解篇

1.注解的概念

1.1 什么是注解?

  Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息或者任何元数据(metadata)的途径和方法。

  基本规则:Annotation(注解)不能影响程序代码的执行,无论增加,删除Annotation(注解),代码都始终如一的执行。

1.2 什么是metadata(元数据)?

  1.元数据以标签的形式存在于Java代码中。

  2.元数据描述的信息是类型安全的。

  3.元数据需要编译器之外的工具额外的处理用来生成其他的程序部件。

  4.元数据可以存在于Java源代码级别,也可以存在于Java代码编译之后的class文件内部。

2.注解的分类

2.1 系统内置的标准注解

1.Override

2.Deprecated

3.SuppressWranning

@Override
子类对父类方法的重写所带的注解,这个笔者就不多说啦!简单

@Deprecated
表示已经过时,不建议使用,但是依然可以使用

比如你在调用Thread类的stop方法的时候出现一条横杠,这就是加了@Deprecated的效果,我截个图给你看看:

这条杠是编译器告诉你此方法已经过时啦,所以加条杠提示你一下,但是依然可以调用,并不是不能使用,而是建议不要使用。

@SuppressWarnings
用来抑制编译时的警告信息,编译器在你写代码的时候,难免会出现很多的警告,有强迫症的程序猿会感到极其不爽,那么肿么办呢?@SuppressWarnings注解就可以告诉编译器,别警告啦,代码不会有问题的。

比如你想把调用Thread的stop方法的警告去掉,那么你就可以这么写:

有的同学可能不理解@SuppressWarnings(“all”)中的”all”是啥意思?其实很简单,@SuppressWarnings注解一定要传递一个参数给它,来表示过滤掉哪些类型的警告,笔者添加了”all”表示过滤掉所有类型的警告,很好理解吧!那么还可以传递什么参数来过滤警告呢?看看下面的表格你就会知道啦:

2.2 元注解

1.Java中4种元注解:

Java 4种元注解表格

2.如何自定义注解呢?请看以下链接:

http://blog.csdn.net/ClAndEllen/article/details/77046797

3.Android支持的注解

3.1 Nullness

  1.@NonNull 声明方法的参数不能为空。

  2.@Nullable注解表示一个方法的参数或者返回值可以是Null的。

3.2 Resource Type(资源类型)

  传递不适合的int值给一个方法,会发生潜在错误。资源类型的注解可以很好的解决这个问题。在下面的代码中,我们有一个方法sayHello,需要一个String类型的资源id,并且使用@StringRes注解进行了标示。

public class MainActivity extends ActionBarActivity {  

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  

        sayHello(R.style.AppTheme);  
    }  


    void sayHello(@StringRes int id) {  
        Toast.makeText(this, "Hello " + getString(id), Toast.LENGTH_LONG).show();  
    }  

}  

  如果我们传递一个style资源的id给sayHello,IDE将会给出警告。

3.3 Threading

Android中提供了四个与线程相关的注解

@UiThread,通常可以等同于主线程,标注方法需要在UIThread执行,比如View类就使用这个注解

@MainThread 主线程,经常启动后创建的第一个线程

@WorkerThread 工作者线程,一般为一些后台的线程,比如AsyncTask里面的doInBackground就是这样的.

@BinderThread 注解方法必须要在BinderThread线程中执行,一般使用较少.

3.4 Overriding Methods

@CallSuper 重写的方法必须要调用super方法

使用这个注解,我们可以强制方法在重写时必须调用父类的方法 比如Application的onCreate,onConfigurationChanged等.

还有一些不常见的请看以下连接:

https://droidyue.com/blog/2016/08/14/android-annnotation/

没有更多推荐了,返回首页