精华内容
下载资源
问答
  • 主要介绍了java自定义函数调用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • JAVA 自定义函数式编程

    千次阅读 2019-09-06 14:56:17
    PS: 因想提取重复代码,所以寻求方案,最终确认使用函数式编程。但百度查下大部分写的是内置类用新版...2.定义一个普通接口(TestInterface.java) 2.1)类上注明为函数式接口(@FunctionalInterface), 有且只能有一个...

    PS: 因想提取重复代码,所以寻求方案,最终确认使用函数式编程。但百度查下大部分写的是内置类用新版的函数式接口怎么实现(Consumer  Function Predicate);

    1. 创建一个springboot项目

    2.定义一个普通接口(TestInterface.java)

              2.1)类上注明为函数式接口(@FunctionalInterface), 有且只能有一个方法;

              2.2)定义接口 void testInterface(String str);

    package com.inte;
    
    @FunctionalInterface
    public interface TestInterface {
        void testInterface(String str);
    }
    

    3. 定义一个普通Java类(Test.java)

    package com.inte;
    
    /**
     * @author :于志强
     * @date :Created in 2019/9/6 15:02
     * @description:测试函数式接口
     */
    public class Test {
        public static void main(String[] args) {
            // fun 随便起个名字
            test("test function interface;", fun -> {
                System.out.println("test press...");
            });
        }
    
        /**
         * 测试接口
         * @param str 传的参数
         * @param testInterface 接口名字
         */
        public static void test(String str, TestInterface testInterface) {
            System.out.println("test begin...");
            testInterface.testInterface(str);
            System.out.println("test end.");
        }
    }

    ------------------------------------------------------- 分割线 以上为单参数无返回值  --------------------------------------------------------------------

    多入参+出参

    4. 定义一个普通接口(MultiParameterInterface.java)

    package com.inte;
    
    @FunctionalInterface
    public interface MultiParameterInterface {
        String testMultiParameter(String str1, String str2);
    }
    

    5. 继续使用Test.java

    package com.inte;
    
    /**
     * @author :于志强
     * @date :Created in 2019/9/6 15:02
     * @description:测试函数式接口
     */
    public class Test {
        public static void main(String[] args) {
            // fun 随便起个名字
            test("test function interface;", fun -> {
                System.out.println("test press...");
            });
            System.out.println("-------------------------------- 分割线 --------------------------------------");
    
            // 多参数加返回值
            testMulti("第一个参数,", "第二个参数;", (str1, str2) -> {
                // 写逻辑处理...
                return str1 + str2 ;
            });
        }
    
        /**
         * 测试接口
         * @param str 传的参数
         * @param testInterface 接口名字
         */
        public static void test(String str, TestInterface testInterface) {
            System.out.println("test begin...");
            testInterface.testInterface(str);
            System.out.println("test end.");
        }
    
        /**
         * 测试接口
         * @param str1 传的参数
         * @param str2 传的参数
         * @param multiParameterInterface 接口名字
         */
        public static void testMulti(String str1, String str2, MultiParameterInterface multiParameterInterface) {
            System.out.println("multi begin...");
            String str = multiParameterInterface.testMultiParameter(str1, str2); // 接值
            System.out.println(str);
            System.out.println("multi end.");
        }
    }
    

     

    展开全文
  • Java用户自定义函数

    千次阅读 2021-02-25 20:31:15
    自定义函数有3种方法。使用关键字 function 构造语法:function funcName([param1][,param2...}){statements;}使用 function 构造语法:var result = new function (['param1'][,'param2']...,'statements'...

    用户除了可以使用JavaScript的内置函数之外,还可以自己定义函数。自定义函数有3种方法。

    使用关键字 function 构造

    语法:

    function funcName([param1][,param2...}){

    statements;

    }

    使用 function 构造

    语法:

    var result = new function (['param1'][,'param2']...,'statements');

    例如;

    var result = new function ('x','y','return x+y');

    使用函数直接量构造

    语法:

    var result = function ([param1][,param2,...]){

    statements

    };

    这里也可以为函数指定一个名称,以便于递归程序的调用。例如:

    var result = function([param1][,param2,...]){

    statements

    };

    注意;

    1.各个函数名不可以重复,并且区分大小写

    2.函数名的命名规则和变量的命名规则相同

    3.参数可以使用变量、常量或者表达式

    4.如果函数有多个参数,多个参数之间使用逗号隔开

    5.如果函数有返回值,使用return语句返回,如果没有return语句,函数将返回一个undefined值

    6.自定义函数不会自动执行,必须调用才会执行

    特此声明:如需转载请注明出处,如有疑问请及时提出以便于改正,如有侵权,联系删除,谢谢

    展开全文
  • java自定义函数调用

    2021-02-12 21:11:21
    一:主类中自定义函数在主类中,如果想要在main函数中调用自定义的其他方法,则这个函数需要使用static关键字定义,否则会报错Cannot make a static reference to the non-static method xx from the type xx,调用...

    一:主类中自定义函数

    在主类中,如果想要在main函数中调用自定义的其他方法,则这个函数需要使用static关键字定义,否则会报错Cannot make a static reference to the non-static method xx from the type xx,调用的时候直接用函数名就可以了,如下:

    public classcreate_function {public static voidmain(String []args){int s = jia(5,4);

    System.out.println(s);}static int jia(int a, intb){

    System.out.println("我是自定义相加函数,我被调用了!!");return a+b;

    }

    }

    下面使用static关键字定义了一个“+”运算的函数,在main中调用时,直接使用函数名,括号中加参数就可以了。输出结果如下:

    我是自定义相加函数,我被调用了!!9

    二:自定义类中函数的调用

    自定义类中函数的调用有两种情况,静态函数和非静态函数,非静态函数的调用需要先声明一个类实例,通过实例调用。静态函数的调用可以通过实例,也可以直接使用类名调用(建议使用这种,要不会造成内存空间的浪费。),如下:

    public classcreate_function {public static voidmain(String []args){

    Y y=newY();int s2 = y.cheng(3,5);

    System.out.println(s2);int s3 = Y.chu(8, 2);

    System.out.println(s3);

    }}classY{int cheng(int a,intb){

    System.out.println("我是自定义类中的乘方法,我被调用了!");return a*b;

    }static int chu(int c,intd){

    System.out.println("我是自定义类中的除方法,我被调用了!");return c/d;

    }

    }

    在下面,自定义了一个Y类,cheng方法是非静态方法,必须通过实例y调用,chu方法是静态方法,使用类名直接调用。输出结果如下:

    我是自定义类中的乘方法,我被调用了!15我是自定义类中的除方法,我被调用了!4

    ***************不积跬步无以至千里***************

    展开全文
  • 一、hive内置函数 1、查看系统自带的函数 hive>show functions; 2、显示自带的函数的用法 ...二、hive自定义函数 当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用...

    一、hive内置函数

    1、查看系统自带的函数

    hive> show functions;

    2、显示自带的函数用法

    hive> desc function upper;

    3、详细显示自带的函数用法

    hive> desc function extended upper;

    二、hive自定义函数

    当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数。

    (一)根据用户自定义函数类别分为以下三种:

    1、UDF(User-Defined-Function)

    一进一出

    2、UDAF(User-Defined Aggregation Function)

    聚集函数,多进一出

    类似于:count/max/min

    3、UDTF(User-Defined Table-Generating Functions)

    一进多出

    如lateral view explore()

    (二)编程步骤:

    继承org.apache.hadoop.hive.ql.UDF

    需要实现evaluate函数;evaluate函数支持重载;

    1、导入pom相关依赖和插件

    <repositories>
        <repository>
            <id>cloudera</id>
     <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.6.0-cdh5.14.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-exec</artifactId>
            <version>1.1.0-cdh5.14.0</version>
        </dependency>
    </dependencies>
    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
         <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-shade-plugin</artifactId>
             <version>2.2</version>
             <executions>
                 <execution>
                     <phase>package</phase>
                     <goals>
                         <goal>shade</goal>
                     </goals>
                     <configuration>
                         <filters>
                             <filter>
                                 <artifact>*:*</artifact>
                                 <excludes>
                                     <exclude>META-INF/*.SF</exclude>
                                     <exclude>META-INF/*.DSA</exclude>
                                     <exclude>META-INF/*/RSA</exclude>
                                 </excludes>
                             </filter>
                         </filters>
                     </configuration>
                 </execution>
             </executions>
         </plugin>
    </plugins>
    </build>

    2、开发java类继承UDF,并重载evaluate 方法

    public class ItcastUDF extends UDF {
        public Text evaluate(final Text s) {
            if (null == s) {
                return null;
            }
            //返回大写字母
            return new Text(s.toString().toUpperCase());
    
        }
    }

    3、将我们的项目打包,并上传到虚拟机/tmp目录下

     

    4、添加我们的jar包

    进入hive的shell窗口添加我们的jar包
    
    //add jar jar包所在的绝对路径
    
    add jar /tmp/original-task_20191124_udf-1.0-SNAPSHOT.jar;

     

    5、设置函数与我们的自定义函数关联

    <--创建临时函数-->
    
    create temporary function tolowercase as 'com.czxy.udf.ItcastUDF';    //包名.类名
    
    <--删除临时函数-->
    
    drop temporary function tolowercase
    
    
    
    
    <--创建永久函数-->
    
    create function tolowercase1 as 'com.czxy.udf.ItcastUDF';
    
    <--删除永久函数-->
    
    drop   function tolowercase1;

    6、使用自定义函数

    select tolowercase('abc');

    (三)注意事项

    (1)UDF必须要有返回类型,可以返回null,但是返回类型不能为void;

    (2UDF中常用Text/LongWritable类型,不推荐使用java类型;

    三、java方式自定义函数

    1、书写函数逻辑

    package com.czxy.demo01;
    
    public class custom_function {
    
        public String gettr(String data){
            return data+"哈哈哈哈哈";
        }
    
    }

    2、打包上传到虚拟机/tmp目录下

    3、添加我们的jar包并使用

    add jar jar包在虚拟机上的绝对路径
    select reflect('包名.类名','函数名','传递到函数的参数');

    hive (default)> add jar /opt/original-task_20191124_udf-1.0-SNAPSHOT.jar;
    Added [/opt/original-task_20191124_udf-1.0-SNAPSHOT.jar] to class path
    Added resources: [/opt/original-task_20191124_udf-1.0-SNAPSHOT.jar]
    hive (default)> select reflect('com.czxy.demo01.custom_function','getStr','chundidecanshu   ');
    OK
    _c0
    chundidecanshu   aaaaa
    Time taken: 12.427 seconds, Fetched: 1 row(s)
    hive (default)> 

     
    展开全文
  • Java自定义函数式接口, 单参数无参使用方法。多参数带返回值使用方法。csdn博文地址:https://blog.csdn.net/yuzhiqiang_1/article/details/100579308
  • JavaJava8 自定义函数编程

    千次阅读 2018-05-21 13:42:24
    转载:https://blog.csdn.net/l1028386804/article/details/80390682一、FunctionalInterface描述Jdk8 就提供了 ...Java8中对FunctionalInterface注解的声明如下:[java] view plain copy@Documented @Retenti...
  • greenplum 是支持java 开发自定函数的,方法如下,请参考. 1.安装jdk,并配置好环境变量。注:每个节点都需要。 2.安装jdk后,执行如下命令:root用户 # echo "$JAVA_HOME/jre/lib/amd64/server" > /etc/ld.so...
  • 主要介绍了Java使用自定义注解实现函数测试功能,结合实例形式分析了java自定义注解在函数测试过程中相关功能、原理与使用技巧,需要的朋友可以参考下
  • Java之——Java8 自定义函数编程

    千次阅读 2018-05-21 13:07:46
    一、FunctionalInterface描述Jdk8 就提供了 ...Java8中对FunctionalInterface注解的声明如下:@Documented @Retention(value=RUNTIME) @Target(value=TYPE) public @interface FunctionalInterface其中,@Targe...
  • JAVA8自定义函数接口

    千次阅读 2018-01-30 16:52:06
    函数接口:JDK1.8的特性,有且只有一个抽象方法的接口就是函数接口 ...自定义函数接口 /** * 自定义函数接口 * 函数接口只能有一个抽象方法 * * @author haibin.tang * @create 2018-01-30 下午1:55 **
  • Lambda表达式是java 1.8才开始有的重要功能,使用Lambda表达式可以替代匿名内部类,代码简洁易懂,提升工作效率。上代码: 函数式接口简介 有且只有一个抽象方法(可以包含default或static方法,但Object类...
  • Mysql自定义函数总结

    2021-02-03 06:43:50
    存储函数创建存储函数,需要使用CREATE FUNCTION语句,基本语法如下:CREATE FUNCTION func_name([func_parameter])RETURNSTYPE[characteristics...] routine_bodyCREATE FUNCTION为用来创建存储函数的关键字;...
  • 1. 函数式接口的理解根据重构的思想,需要把容易变化的模块进行抽象并封装起来,从这个点来看,Java8新引入的函数式接口就是基于这个思想进行设计的。2. 函数式接口定义2.1 自定义如下需要FunctionalInterface...
  • NULL 博文链接:https://wujie2008.iteye.com/blog/1694631
  • java8自定义函数接口

    千次阅读 2018-11-15 13:55:47
    java8开始可以自定义函数式接口,方便开发人员使用lambda表达式,简化了代码量。 1.首先定义一个函数式接口(使用泛型能过更好的适配所有对象的操作)   /** * Represents a function that accepts two ...
  • hive的自定义函数

    2013-02-06 11:48:24
    简单介绍了hive自定义函数的编写步骤以及使用。
  • java自定义回调函数

    2015-04-05 23:43:35
    java自定义回调函数代码,SDK开发.对后续编写自己的SDK有帮助!
  • java基础之函数式接口

    2021-03-03 10:43:14
    一、函数式接口在Java中是指:有且仅有一个抽象方法的接口,所以函数式接口就是可以适用于Lambda使用的接口二、自定义函数式接口格式:@FunctionalInterface //该注解可省,一旦使用该注解来定义接口,编译器将会...
  • 我是看到了大佬的博客还能这样解析,我们来解析一下思路并扩展一下,传送门:java实现公式解析 1. Stack的介绍 栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。栈是一种数据结构,它按照...
  • Neo4j 自定义函数

    2021-03-16 16:41:15
    在一些复杂的应用场景中,neo4j自带的各种函数不能满足需求的时候,我们可以通过自定义函数去扩展和提升Neo4j的一些常用命令功能。 自定义函数的结果输出类型具体包括以下类型: • java.lang.Boolean or boolean ...
  • 帆软自定义函数

    千次阅读 2019-05-07 09:10:48
    FineReport已经提供了大量的自带函数,在正常情况下足够满足用户的报表制作需求,但是在一些特殊领域,可能需要一些特殊的函数,在这种情况下,FineReport提供了自定义函数机制,可以由用户根据业务需要自己来定义...
  • clickhouse官方提供了许多的函数,包括常规的数学函数,聚合函数,时间函数,逻辑函数,比较函数等等,关于官方的函数可以在官方文档中查看: 官方文档 当然随着clickhouse的流行,国内也有不少的博主已经开始介绍...
  • 公式解析类(字符串公式,自定义函数公式) 来自网络经过部分修改
  • Java 调用 自定义函数SQL

    千次阅读 2015-07-21 23:16:43
    Java @Autowired private JdbcTemplate jdbcTemplate; public List<JSONObject> getCallDefinedFunctionSQL (String sysCode){ final String callFunctionSql = "{?= call getTreeChildList(?)}" ; ...
  • [FineReport]自定义函数

    千次阅读 2016-12-26 16:36:40
    FineReport如同其他报表如CR一样,提供了许多函数方便用户使用,但是基于一些实际情况需要自定义函数,如何进行自定义函数呢? FineReport设计器–服务器–函数管理器 public Object run(Object[] args) { ...
  • 计算公式 JEP本身支持的函数 如果没有需要的函数 下文有自定义函数实现 计算 M12*3.14/4*pow(O5,2)*(K11+273-G11)/(G12*sqrt(3.14*M11*P11)) 的值 够复杂吧 public static void main(String[] args) { JEP jep ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 386,097
精华内容 154,438
关键字:

java自定义函数

java 订阅
友情链接: bui_ca35.zip