java 定义公有函数_java8:公共定义的函数式接口

公共定义的函数式接口

从jdk1.8开始为了方便用户开发专门提供了一个新的包:java.util.function

在这个包里面针对于用户可能用到的函数式接口做了一个公共定义。

最为核心的有四个接口:

功能性接口:Function

有输入参数,有返回值

是对接收一个T类型参数,返回R类型的结果的方法的抽象

通过调用apply方法执行内容

需求:给定一个字符串,返回字符串长度

import java.util.function.Function;

public class Demo1 {

public static void main(String[] args) {

// 定义字符串

String str = "helloworld";

//第一种写法:不调用方法

Function fun1=(s)->{

int length = s.length();

return length;

};

Integer length1 = fun1.apply(str);

System.out.println(length1);

//第二种写法:调用方法

//在调用的时候写方法体,方法比较灵活

int length = testFun(str, (s) -> s.length());

System.out.println(length);

}

// 方法

/**

* @param str 输入参数

* @param fun 表达式 String 为输入类型,Integer为输出类型

* @return 返回字符串长度

*/

public static int testFun(String str, Function fun) {

// 执行

Integer length = fun.apply(str);

return length;

}

}

消费型接口:Consumer

有输入参数,没返回值

对应的方法类型为接收一个参数,没有返回值

Consumer 使用accept对参数执行行为

需求:输出字符串

import java.util.function.Consumer;

public class Demo2 {

public static void main(String[] args) {

// 创建字符串

String str = "hello world";

//第一种写法:不调用方法

Consumer con1=(s)->{

System.out.println(s);

};

con1.accept(str);

//第二种写法:调用方法

testCon(str, (s) -> System.out.println(s));

}

/**

*

* @param str 传入参数

* @param con

*/

public static void testCon(String str, Consumer con) {

// 执行

con.accept(str);

}

}

供给型接口:Supplier

无传入参数,有返回值

该接口对应的方法类型不接受参数,但是提供一个返回值

使用get()方法获得这个返回值

import java.util.function.Supplier;

public class Demo3 {

public static void main(String[] args) {

// 创建字符串

String str = "hello world";

//第一种写法:不调用方法

Supplier sup1=()->{

return str;

};

String s = sup1.get();

System.out.println(s);

//第二种写法:调用方法

String sup = testSup(() -> str);

System.out.println(sup);

}

/**

*

* @param sup

* @return

*/

public static String testSup(Supplier sup) {

// 执行

String s = sup.get();

return s;

}

}

断言型接口:Predicate

有传入参数,有返回值Boolean

该接口对应的方法为接收一个参数,返回一个Boolean类型值

多用于判断与过滤,使用test()方法执行这段行为

需求:输入字符串,判断长度是否大于0

import java.util.function.Predicate;

public class Demo4 {

public static void main(String[] args) {

// 创建字符串

String str = "hello world";

//第一种写法:不调用方法

Predicate pre = (s) -> {

boolean b = s.length() > 0;

return b;

};

boolean test = pre.test(str);

System.out.println(test);

//第二种写法:调用方法

//在调用的时候写方法体,方法比较灵活

boolean flag = testPre(str, (s) -> s.length() > 0);

System.out.println(flag);

}

/**

* @param str

* @param pre

* @return

*/

public static boolean testPre(String str, Predicate pre) {

// 执行

boolean flag = pre.test(str);

return flag;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
class ArmConnect: public rclcpp::Node { public: ArmConnect(const arm_connect::TopicType &topic_param); ~ArmConnect() = default; Camera::ImageInfo& GetImageInfo(Camera::CameraNum num); std::vector<std::vector<double>>& GetPointCloudInfo(); void SaveCalibrationDataInfo(const std::string &filename); std::vector<CalibrationData::detection>& GetCalibrationDataInfo(); bool IsGetCalibrationIdInfo(); bool IsGetCakubrationDataInfo(); private: void ImageCallback(const sensor_msgs::msg::Image &msg); void PointCloudCallback(const sensor_msgs::msg::PointCloud2 &msg); void CalibrationDataCallback(const apriltag_msgs::msg::AprilTagDetectionArray &msg); private: rclcpp::Subscription<sensor_msgs::msg::Image>::SharedPtr image_subscriber_; Camera::ImageInfo camera_image_; std::mutex image_lock_; rclcpp::Subscription<sensor_msgs::msg::PointCloud2>::SharedPtr pointcloud_subscriber_; rclcpp::Publisher<sensor_msgs::msg::PointCloud2>:: SharedPtr pointcloud_publisher_; std::vector<std::vector<double>> pointcloud_vector_; pcl::PointCloud<pcl::PointXYZ>::Ptr point_cloud_; std::mutex pointcloud_lock_; rclcpp::Subscription<apriltag_msgs::msg::AprilTagDetectionArray>::SharedPtr calibrationdata_subscriber_; std::vector<CalibrationData::detection> calibrationdata_vector_; mutable bool calibrationdata_flag_ = false; mutable bool calibrationboard_flag_ = false; std::mutex Calibrationdata_lock_; int CalibrationID; }; 上述是一个类的定义,如何在main函数中给上述类中的 int CalibrationID 赋值
06-09

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值