发现最近大家都为了所谓的兼容性和扩充性都在滥用接口,现在大话下Java中的接口。
首先对java中的接口进行分类
1.标示性接口
常见的如下:
序列化接口
public interface Serializable {
}
可迭代接口:
public interface Iterable<T> {
/**
* Returns an iterator over a set of elements of type T.
*
* @return an Iterator.
*/
Iterator<T> iterator();
}
比较接口:
public interface Comparable<T> {
public int compareTo(T o);
}
2.功能性接口
此类接口最为常见,也是我们在使用中最滥用的一部分,常见如下:
Map接口:
public interface Map<K,V> {
int size();
boolean containsKey(Object key);
............
}
List接口:
public interface List<E> extends Collection<E> {
int size();
boolean isEmpty();
......
}
3.常量型接口
此类接口一般是一些静态常量,常见如下:
cookie policy接口:
public interface CookiePolicy {
/**
* One pre-defined policy which accepts all cookies.
*/
public static final CookiePolicy ACCEPT_ALL = new CookiePolicy(){
public boolean shouldAccept(URI uri, HttpCookie cookie) {
return true;
}
};
/**
* One pre-defined policy which accepts no cookies.
*/
public static final CookiePolicy ACCEPT_NONE = new CookiePolicy(){
public boolean shouldAccept(URI uri, HttpCookie cookie) {
return false;
}
};
......
}
其次我们罗列下我们常犯的错误
1.接口中未定义的方法在实现类中调用
public interface ITest{
boolean isTest();
}
实现类:
public class Test implements ITest{
@Override
public boolean isTest() {
return false;
}
public boolean isOk(){
return true;
}
}
调用:
public class MainTest{
private ITest test=new Test();
public void test(){
(Test)test.isOk();
}
}
既然你非要调用为啥不在接口中声明了,如果是自己独特的方法那么接口设计就出了问题,自己独特的方法也应该是private的,然后在isTest()中调用,正确做法如下:
修改接口声明:
public interface ITest{
boolean isTest();
boolean isOk();
}
2.接口中未声明的方法在实现类中public出来了,举例如下:
接口:
public interface ITest{
boolean isTest();
}
实现类:
public class Test implements ITest{
@Override
public boolean isTest() {
return isOk();
}
public boolean isOk(){
return true;
}
}
调用:
public class MainTest{
private ITest test=new Test();
public void test(){
test.isTest();
}
}
暴露出来的方法就要维护,参数为接口型的那么这种接口未声明的方法没有办法给外界调用,因此应该修改成private的,
自己调用,不需要维护。
强烈建议慎用接口
分享到:
相关推荐
Java通过内置的Thread类和Runnable接口支持多线程。在大话西游这样的游戏中,多线程的应用十分广泛,例如:主线程负责游戏的主循环,而其他线程可能用于处理玩家交互、动画渲染或者后台任务。理解如何创建、管理以及...
Java中的`Serializable`接口可以实现对象的序列化,实现数据备份和恢复。 19. **状态模式**:允许对象在其内部状态改变时改变它的行为,对象看起来好像修改了它的类。Java中Socket的连接状态管理就是状态模式的应用...
11. 接口命名:接口中的方法和属性不应该添加任何修饰符,保持简洁性,并添加有效的javadoc注释。如果一定要在接口中定义变量,这些变量应与接口方法相关,并且是整个应用的基础常量。 12. 接口和实现类命名:实现...
这种模式在Java中的应用场景非常广泛,尤其是在处理不兼容接口时,可以有效地解决类之间如何合作的问题。适配器模式通过创建一个中间层(即适配器),使得原本由于接口不兼容而无法在一起工作的类可以协同工作。 ##...
《大话JAVA性能优化》这本书深入探讨了Java性能优化的重要性及其实践方法,旨在帮助开发者提升应用程序的效率,减少资源消耗,提高系统响应速度和用户体验。Java性能优化是软件开发过程中的一个重要环节,尤其是在...
如果对象实现了`Cloneable`接口,可以通过`clone()`方法创建新实例,避免构造函数的调用。例如,使用工厂模式时,可以预先创建一个基础对象并使用`clone()`来快速生成新实例,以减少对象创建的时间。 2. **非阻塞I/...
在Java后端开发中,对接大华摄像头进行远程抓图和录像是一项常见的任务,尤其在监控系统、视频会议或者安全防护等领域。这个"Java对接大华摄像头进行抓图和录像的demo"提供了一个实例,帮助开发者理解如何实现这一...
在本文中,我们将深入探讨如何使用Java实现线性表的抽象数据类型,并专注于一个...随着Java知识的深入和对数据结构的进一步理解,可以考虑优化这个实现,例如使用接口进行设计,或者采用更高效的方法来合并两个线性表。
5. **示例代码**(位于samples文件夹中):提供实际的编程示例,通常包括多种编程语言(如C++、Java、Python等),帮助开发者快速上手,了解如何在实际项目中集成高拍仪功能。 在"doc"文件夹中,可能包含的是接口...
《大话企业级Android开发》一书主要探讨的是在企业环境中如何高效、稳定地进行Android应用的开发。作为一款面向专业开发者的指南,它涵盖了Java面向对象设计的六大原则,这些原则是软件工程中不可或缺的基础,对于...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可重用性、可维护性和灵活性。本资源包含一个PDF文档和一个TXT文本文件,两者都详细介绍了Java设计模式的基本概念和...
3. Java编程基础:由于Android主要使用Java语言,所以书中会讲解Java的基本语法和面向对象编程概念。 4. XML基础:XML用于编写Android应用的资源文件,如布局、字符串、颜色等,学习XML是Android开发的基础。 二、...
在Java中,可以通过双重检查锁定、静态内部类等方式实现单例,以确保线程安全并防止早期初始化。 二、工厂模式 工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。通过工厂方法,我们可以在不暴露...
在Java编程中,类(Class)是面向对象编程的基础,它代表了一组具有相同特征和行为的实例的模板。类可以看作是对现实世界中某一类事物的抽象,例如,人、动物或者汽车。类定义了对象的属性(Attributes)和方法...
在这个压缩包中的源代码,很可能是通过实际的编程示例来展示如何在Java或其他编程语言中实现策略模式。你可以通过阅读和运行这些代码来更深入地理解策略模式的工作原理和应用方式。同时,这些案例也可以帮助你更好地...
写好的java代码案例,拿过来直接可以使用,十分方便。 重要的事情说三遍:写好的java代码案例,拿过来直接可以使用。 写好的java代码案例,拿过来直接可以使用。 写好的java代码案例,拿过来直接可以使用。
最后,文档中提到了作者的GitHub仓库地址,这是一个非常有价值的资源库,包含了所有原创文章的分类汇总以及相应的源码,涵盖了Java、Docker、Kubernetes、DevOps等多个领域,对于想要学习和实践OpenFaaS的开发者来说...
在Java编程中,设计模式尤为重要,因为它可以帮助开发者编写出可维护、可扩展、易于理解的代码。这个压缩包文件"大话模式源代码"可能包含了28种不同的设计模式的实例源码,这对于学习和理解设计模式非常有帮助。 1....
在Android应用中,Java代码负责处理业务逻辑和用户交互。例如,使用OnClickListener接口可以监听按钮点击事件,根据事件执行相应的操作。Android还提供了多线程机制,如Handler、Looper和Runnable,以实现后台任务和...
- **功能扩展**:通过封装一系列原生接口(Native API),使得WebView中的JavaScript代码能够调用这些接口,从而实现更多原生功能的支持。 #### 五、技术实现 下面详细介绍混合开发中的一些关键技术点: **1. ...