在构造函数上使用@Autowired的好处是什么,
viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
updateButtonPosition(position, positionOffsetPixels);
}
});
//Move the button according to the tab you want it to be fixed.
//Here is the 3rd tab of a 3 tab viewPager, for instance
private void updateButtonPosition(int position, int positionOffsetPixels) {
int fixedRewardXPos;
if (position == 0) {
fixedRewardXPos = viewPager.getWidth() * 2 - positionOffsetPixels;
} else if (position == 1) {
fixedRewardXPos = viewPager.getWidth() - positionOffsetPixels;
} else {
fixedRewardXPos = -positionOffsetPixels;
}
//Add getLeft() to keep the button to its former position in it's fragment
aButton.setX(fixedRewardXPos + aButton.getLeft());
}
答案 0 :(得分:6)
这样bean A
将被注入构造函数中。它更清晰,因为你可以声明bean的依赖关系,因为它不能在不提供A
的情况下实例化。这使测试变得更加容易。
答案 1 :(得分:1)
您可以在班级中拥有final
个字段,通常甚至是不可变的类 - 更少移动的部分,更清晰的代码,更容易理解。
这个类更容易测试,你总是知道要在其中设置哪个属性来创建一个工作类(因为构造函数会强制你设置它们) - 当然有人可能仍会在参数中传递空值。
答案 2 :(得分:0)
它只是constructor based dependency injection
。
此链接将包含更多信息 Constructor based dependency injection
答案 3 :(得分:-1)
如果您想了解有关@Autowired
的更多信息Spring解释了它的文档:
如果找到注释@Autowired