注释lib与私有字段一起使用?

时间:2017-11-03 08:16:06

标签: android annotations

我的活动摘录:

import butterknife.BindView;
import butterknife.ButterKnife;

public class DetailsActivity extends AppCompatActivity {
  @BindView(R.id.productTitleTextView)
  TextView productTitleTextView;

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.shopping_details);
        ButterKnife.bind(this);
        productTitleTextView.setText("Hello");
}

行。它工作正常。

但我认为违反了封装,因为字段不是私有的。 我不希望任何人知道Activity的内部文件。

所以理想的解决方案应该像这样:

@BindView(R.id.productTitleTextView)
private TextView productTitleTextView;

问题是:

Android的注释库是否可以执行此操作?

1 个答案:

答案 0 :(得分:0)

他们不能私有,否则无法访问它。 ButterKnife为您生成一些代码,其中包含您不愿意为您编写的所有样板代码。它的作用是什么,当你写ButterKnife.bind(this)时,在这种情况下你的Activity就是试图通过你提供的引用访问每个ButterKnife注释成员,并做{{1}使用显式强制转换。如果该成员是私有的,则无法访问(基本java)。