JAVA 如何实现接口操作

问题描述

如题写下代码java

解决方案

service层的curd操作 UserInterface先定义的是一个接口 UserInterfaceImpl 实现了这个接口public interface UserInterface{ User saveUser(User user); boolean delete(User user); List query(User user); User update(User user);}//保存为UserInterface.java,这是接口public class UserInterfaceImpl implements UserInterface{ //add public User save(User user){ return null; }//delete public boolean delete(User user){ return false; }// query public List query(User user){ return null; }// update public User update(User user){ return null; }}实体类(entity)public class User{ }
解决方案二:
教你如何实现简单的aop?。。。package spring.aop.jdkaop2;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class BusinessProcessorHandler implements InvocationHandler {private Object target;public Object bind(Object target) {this.target = target;return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("You can do something here before process your business");Object result = method.invoke(target, args);System.out.println("You can do something here after process your business");return result;}}package spring.aop.jdkaop2;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.Modifier;import org.apache.commons.lang3.StringUtils;import spring.aop.model.BusinessProcessor;import spring.aop.model.BusinessProcessorImpl;public class Main {public static void main(String[] args) {try {Main test = new Main();//test.test01();test.test02();} catch (Exception e) {e.printStackTrace();}}//通过结果我们就能够很简单的看出Proxy的作用了,它能够在你的核心业务方法前后做一些你所想做的辅助工作,如log日志,安全机制等等。public void test01() {//实现了 invocationHandlerBusinessProcessor businessProcessor = (BusinessProcessor) new BusinessProcessorHandler().bind(new BusinessProcessorImpl());businessProcessor.processBusiness();}/** * 实现了InvocationHandler接口的invoke方法。其实这个类就是最终Proxy调用的固定接口方法。 * Proxy不管客户端的业务方法是怎么实现的。当客户端调用Proxy时,它只 * 会调用InvocationHandler的invoke接口,所以我们的真正实现的方法就必须在invoke方法中去调用 * * 1,客户端拿到的是$Proxy0的实例对象,由于$Proxy0继承了BusinessProcessor,因此转化为BusinessProcessor没任何问题。 * 2,实际上调用的是$Proxy0.processBusiness();那么$Proxy0.processBusiness()的实现就是通过InvocationHandler去调用invoke方法啦! * */public void test02() {BusinessProcessor businessProcessor = (BusinessProcessor) new BusinessProcessorHandler().bind(new BusinessProcessorImpl());System.out.println("----------------------基本输出------------------------------");businessProcessor.processBusiness();System.out.println("----------------------查看具体对象-----------------------------");//bp原来是个$Proxy0这个类的对象。那么这个类到底是长什么样子呢?好的。我们再写二个方法去把这个类打印出来看个究竟,是什么三头六臂呢?System.out.println("businessProcessor is: " + businessProcessor.getClass().getName());System.out.println("----------------------查看具体对象内部的所有内容(字段,方法等)-----------------------------");printClassDefinition(businessProcessor.getClass());}private String getModifier(int modifier) {String result = "";switch(modifier) {case Modifier.ABSTRACT: result = "abstract";case Modifier.FINAL: result = "final";case Modifier.NATIVE: result = "native";case Modifier.PRIVATE: result = "private";case Modifier.PROTECTED: result = "protected";case Modifier.PUBLIC: result = "public";case Modifier.STATIC: result = "static";case Modifier.SYNCHRONIZED: result = "synchronized";/** * transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候, * transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。 */case Modifier.TRANSIENT: result = "transient";/** * * volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值. * 简单地说就是防止编译器对代码进行优化.比如如下程序: * XBYTE[2]=0x55; * XBYTE[2]=0x56; * XBYTE[2]=0x57; * XBYTE[2]=0x58; * * 对外部硬件而言,上述四条语句分别表示不同的操作,会产生四种不同的动作,但是编译器却会对上述四条语句进行优化, * 认为只有XBYTE[2]=0x58(即忽略前三条语句,只产生一条机器代码)。如果键入volatile,则编译器会逐一的进行编译 * 并产生相应的机器代码(产生四条代码). */case Modifier.VOLATILE: result = "volatile";}return result;}private void printClassDefinition(Class<?> clazz) {//得到类的修饰符String modifier = getModifier(clazz.getModifiers());if(StringUtils.isNotEmpty(modifier)) {modifier = modifier + " ";}//得到继承的类String superClazzName = clazz.getSuperclass().getName();if(StringUtils.isNotEmpty(superClazzName)) {superClazzName = "extends " + superClazzName;}//得到所有的接口Class<?>[] interfaces = clazz.getInterfaces();String interfaceStr = "";for(int i = 0; i < interfaces.length; i ++){if(i == 0) {interfaceStr = interfaceStr + "implements ";}interfaceStr += interfaces[i].getName();}System.out.println(modifier + clazz.getName() + " " + superClazzName + " " + interfaceStr);System.out.println("{");//获取字段信息Field[] fields = clazz.getDeclaredFields();for(int i = 0; i < fields.length; i ++) {//获取字段修饰符String modif = getModifier(fields[i].getModifiers());if(StringUtils.isNotEmpty(modif)) {modif = modif + " ";}//获取字段的类型和名称String fieldType = fields[i].getType().getName();String fieldName = fields[i].getName();System.out.println("t" + modif + fieldType + " " + fieldName + ";");System.out.println();}System.out.println();System.out.println();//获取方法信息Method[] methods = clazz.getMethods();for(int i = 0; i < methods.length; i ++) { Method method = methods[i]; //获取方法修饰符String modif = getModifier(methods[i].getModifiers());if(StringUtils.isNotEmpty(modif)) {modif = modif + " ";}//获取方法的返回类型与名称Class<?>[] params = methods[i].getParameterTypes();String paramStr = "(";for(int j = 0; j < params.length; j ++) {paramStr = paramStr + params[j].getName();if(i < params.length - 1) {paramStr = paramStr + ",";}}paramStr = paramStr + ")";//得到所有的异常Class<?>[] exceptions = method.getExceptionTypes();String exceptionStr = "";for(int j = 0; j < exceptions.length; j ++) {if(j == 0) {exceptionStr = exceptionStr + "throws "; }exceptionStr = exceptionStr + exceptions[j].getName();if(i < exceptions.length - 1) {exceptionStr = exceptionStr + ",";}}exceptionStr = exceptionStr + ";";String meothdName = methods[i].getName();String returnType = methods[i].getReturnType().getName();System.out.println("t"+ modifier + returnType + " " + meothdName + " " + paramStr + " " + exceptionStr);System.out.println(); }System.out.println("}");}}
解决方案三:
楼主这个提问很模糊,我的理解是不是下面的意思1、声明一个接口public interface SampleInterface {public void doSomething();}2、接口的实现与调用public class Test {public void method1(SampleInterface sampleInterface) {System.out.println("Do something in test..");sampleInterface.doSomething();}public static void main(String[] args) {Test test = new Test();test.method1(new SampleInterface() {@Overridepublic void doSomething() {System.out.println("Do something in interface..");}});}}
解决方案四:
刷积分的吧!!!!!!
解决方案五:
1.实现接口 public interface ExampleInterface{ public void do(); public String doThis(int number); } public class sub implements ExampleInterface{ public void do(){ //specify what must happen } public String doThis(int number){ //specfiy what must happen } }2.继续类 public class SuperClass{ public int getNb(){ //specify what must happen return 1; } public int getNb2(){ //specify what must happen return 2; } } public class SubClass extends SuperClass{ //you can override the implementation @Override public int getNb2(){ return 3; } }3.demoSubclass s = new SubClass(); s.getNb(); //returns 1 s.getNb2(); //returns 3 SuperClass sup = new SuperClass(); sup.getNb(); //returns 1 sup.getNb2(); //returns 2

时间: 2024-08-19 06:11:25

JAVA 如何实现接口操作的相关文章

Java 调用底层接口的几种方法

Java 调用底层接口 Java 调用底层接口要通过动态链接库进行,在windows下是dll文件,linux是so文件 Java调用动态库所需要关心的问题:     如何装载文件,以及如何定位所要使用的方法:      数据类型是如何对应的:     如何给使用的方法传递参数:     如何获取返回的值. 目前调用底层接口用的比较多的技术包括jni.jna.jnative.Nativecall等 JNI 封装本地接口 JAVA可以通过JNI接口访问本地的动态连接库,从而扩展JAVA的功能.使用

Java语言的接口与类型安全

安全 接口是实现构件可插入性的关键,可插入构件的关键在于存在一个公用的接口,以及每个构件实现了这个接口. 什么是接口? Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 接口的两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构:二,一个类所具有的方法的特征集合,是一种逻辑上的抽象.前者叫做"Java接口",后者叫做"接口&qu

漫谈Java语言的接口与类型安全

安全 接口是实现构件可插入性的关键,可插入构件的关键在于存在一个公用的接口,以及每个构件实现了这个接口. 什么是接口? Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 接口的两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构:二,一个类所具有的方法的特征集合,是一种逻辑上的抽象.前者叫做"Java接口",后者叫做"接口&qu

浅析Java 8的聚合操作

Oracle在2014年3月19日如期发布了Java 8.Java 8版本被认为是具有里程碑意义的一个版本,Oracle在该版本中添加了许多新特性,包括Lambda表达式.方法引用.加强了安全等等. 在众多的新特性中,聚合操作(Aggregate Operations)是针对集合类的一个比较大的变化.通过聚合操作,开发者可以更容易地使用Lambda表达式,并且更方便地实现对集合的查找.遍历.过滤以及常见计算等. 聚合操作与Java 8中的Lambda表达式.方法引用等新特性是相关的,一般一起组合

PHP如何处理JAVA过来的接口和PHP返回给Javascript的JSON字符串

如果你想处理JAVA过来的接口.在PHP里面是这样表现的: <?php $url = '此处为JAVA提供的接口URL地址'; //我们统一用的是JSON格式 $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CUR

java-求解答,关于Java类和接口问题

问题描述 求解答,关于Java类和接口问题 在书上看到,对于实现了Comparable接口的类,Arrays类中的sort方法就可以对其进行排序, 那么,我们自己写的接口也能有这样的功能吗? 即,自己声明一个接口并定义一个类方法,对于实现了该接口的其他类,那么就可以使用该类方法. 如果能的话,能给个例子吗? 解决方案 Android问题:Java接口与类 解决方案二: http://blog.csdn.net/dliyuedong/article/details/21788731http://w

在JavaScript中调用Java类和接口的方法_javascript技巧

前言 本文中所有的代码使用 JavaScript 编写,但你也可以用其他兼容 JSR 223 的脚本语言.这些例子可作为脚本文件也可以在交互式 Shell 中一次运行一个语句的方式来运行.在 JavaScript 中访问对象的属性和方法的语法与 Java 语言相同. 本文包含如下几部分: 1.访问 Java 类 为了在 JavaScript 中访问原生类型或者引用 Java 类型,可以调用 Java.type() 函数,该函数根据传入的完整类名返回对应对象的类型.下面代码显示如何获取不同的对象类

omparable接口 容器-java基础Comparable接口的问题

问题描述 java基础Comparable接口的问题 import java.util.*; class Student implements Comparable { int id; String name; public Student(int id, String name) { this.id = id; this.name = name; } public String toString() { return id + " " +name ; } public int com

Java语言的接口与类型安全_JSP编程

接口是实现构件可插入性的关键,可插入构件的关键在于存在一个公用的接口,以及每个构件实现了这个接口. 什么是接口? Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 接口的两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构:二,一个类所具有的方法的特征集合,是一种逻辑上的抽象.前者叫做"Java接口",后者叫做"接口"