我的活动摘录:
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的注释库是否可以执行此操作?
答案 0 :(得分:0)
他们不能私有,否则无法访问它。 ButterKnife
为您生成一些代码,其中包含您不愿意为您编写的所有样板代码。它的作用是什么,当你写ButterKnife.bind(this)
时,在这种情况下你的Activity
就是试图通过你提供的引用访问每个ButterKnife
注释成员,并做{{1}使用显式强制转换。如果该成员是私有的,则无法访问(基本java)。