那么,我有一个活动类与两个后台任务(asynchronous任务)已被定义在两个单独的类像 public class GettingBeaconsList extends AsyncTask<String, String, String> public class GettingAirports extends AsyncTask<String, String, String> 它们在MainClass中初始化并执行 public class MainClass extends Activity implements DelegateTaskCompleted { int ServiceBoolean = 0; public OnClickListener LoadingBeaconList = new OnClickListener() { public void onClick(View v) { ServiceBoolean =1; new GettingBeaconsList (context,MainClass.this).execute(); } } public OnClickListener LoadingAirportList= new OnClickListener() { public void […]
一个很好的例子是什么时候在Java中准确地使用接口将是理想的,任何适用的具体裁决。
我一直听到大多数编程相关网站的声明: 编程到一个接口而不是一个实现 但是我不明白这个影响 例子会有所帮助。 编辑:我收到了很多很好的答案,所以你可以补充一些代码片段,以更好地了解这个问题。 谢谢!
那么,明确实现一个接口的好用例究竟是什么? 仅仅是为了让使用这个类的人不必在intellisense中看到所有这些方法/属性呢?
我了解编码到接口的原理 – 将接口的实现与接口分离,并允许交换接口的实现。 我应该编写接口为我写的每个类或是过度杀伤 ? 除非真的值得,否则我不想将项目中源文件的数量加倍。 我可以使用什么因素来决定是否通过接口进行编码?
我想为多个EditText字段实现TextWatcher接口。 目前我正在使用: text1.addTextChangedListener(this); text2.addTextChangedListener(this); 然后重写我的Activity中的方法: public void afterTextChanged(Editable s) {} public void beforeTextChanged(CharSequence s, int start, int count, int after) {} public void onTextChanged(CharSequence s, int start, int before, int count) { // do some operation on text of text1 field // do some operation on text of text2 field } 但是,这工作正常,但我正在寻找其他方式,以便我可以明确地确定SoftKeyboard目前在哪个EditText字段集中。
可能重复: C#:接口 – 隐式和显式实现 有人会解释这两个野兽之间的差异,以及如何使用它们。 AFAIK,很多pre.2.0类都是在没有genericstypes的情况下实现的,因此后者版本实现了两种接口types。 是唯一需要使用它的情况吗? 你还可以深入解释如何使用它们。 谢谢
为了正确掌握界面的最佳实践,我注意到如下的声明: List<String> myList = new ArrayList<String>(); 代替 ArrayList<String> myList = new ArrayList<String>(); – 我的理解原因是因为它允许灵活性的情况下有一天,你不想实现一个ArrayList,但也许是另一种types的列表。 有了这个逻辑,我设立了一个例子: public class InterfaceTest { public static void main(String[] args) { PetInterface p = new Cat(); p.talk(); } } interface PetInterface { public void talk(); } class Dog implements PetInterface { @Override public void talk() { System.out.println("Bark!"); } } class Cat […]
我们为什么要使用Interface? 仅仅是为了标准化吗?
接口的原因真的没有了我。 从我所了解的情况来看,这对C#中不存在的多重inheritance是一种解决方法(或者我被告知)。 我所看到的是,你预先定义了一些成员和职能,然后再次在class上重新定义。 从而使接口变得冗余。 它只是感觉像句法…好吧,对我来说垃圾(请不要冒犯意味着垃圾在无用的东西)。 在下面的例子中,我从堆栈溢出中的不同的C#接口线程中获得了一个名为Pizza的基类,而不是一个接口。 简单的例子(取自不同的堆栈溢出贡献) public interface IPizza { public void Order(); } public class PepperoniPizza : IPizza { public void Order() { //Order Pepperoni pizza } } public class HawaiiPizza : IPizza { public void Order() { //Order HawaiiPizza } }