精华内容
下载资源
问答
  • 一些围绕Java记录的实用程序类 在菜单上 地图特质 仅通过实现接口MapTrait将任何记录转换为java.util.Map record Person( String name, int age) implements MapTrait {} ... Map< String> map = new Person ( " ...
  • 一个简单范围记录如下所示: record Range( int from, int to) {} 记录定义实际上与带有以下内容最终类相同: 不变领域 公共访问者 构造函数 equals(),hashCode()和toString()实现 因此,我...
    java 实习记录

    java 实习记录

    JEP 359 (可在JDK 14中用作预览功能)将记录引入Java。 记录是对普通数据聚合建模的简单方法。

    一个简单的范围记录如下所示:

    record Range( int from, int to) {}

    记录定义实际上与带有以下内容的最终类相同:

    • 不变的领域
    • 公共访问者
    • 构造函数
    • equals(),hashCode()和toString()的实现

    因此,我们可以像这样使用记录:

     Range range = new Range( 1 , 5 );
     int from = range.from(); // 1
     int to = range.to(); // 5
     String toString = range.toString(); // Range[from=1, to=5]
     boolean equals = range.equals( new Range( 1 , 5 )); // true
    

    请注意,访问器的名称是from()和to(),而不是getFrom()和getTo()。

    构造函数呢?

    假设我们要向Record中添加一个构造函数以执行一些验证:

     record Range( int from, int to) {
    
        public Range( int from, int to) {
    
            if (from > to) {
    
                throw new IllegalArgumentException();
    
            }
    
            this .from = from;
    
            this .to = to;
    
        }
     }
    

    这样可以避免创建无效的Range实例。 但是,我们不得不多次写下from和to字段来执行简单的验证,这有点令人讨厌。

    为了避免这种情况,我们可以使用一种特殊形式的记录构造函数,称为紧凑构造函数。 这使我们可以跳过定义构造函数参数并将构造函数参数分配给字段的操作。 看起来像这样:

     record Range( int from, int to) {
    
        public Range {
    
            if (from > to) {
    
                throw new IllegalArgumentException();
    
            }
    
        }
     }
    

    结果的工作原理与先前的构造函数完全相同。

    定制方法

    我们还可以添加新方法并覆盖记录中的现有方法。

    例如:

     record Range( int from, int to) { 
        public int getDistance() {
    
            return to - from;
    
        }
    
        @Override
    
        public String toString() {
    
            return String.format( "Range[from: %s, to: %s, distance: %s]" ,
    
                    from, to, getDistance());
    
        }
     }
    

    为什么记录有用?

    如果我们需要一个简单的类来传递数据,记录只会减少我们必须编写的代码量。 用例示例是方法,复合映射键或数据传输对象的多个返回值。

    假设您要在集合中找到最小值和最大值。 使用记录,您可以只用一行创建两个值的返回类型:

     record MinMax( int min, int max) {}
     static MinMax minMax(Collection<Integer> numbers) { ... }
    

    (是的,您可以使用单独的方法来找到最小值和最大值。但是,然后您必须对集合进行两次迭代)

    记录还提供了一种创建复合Map键的简便方法:

     record NameAndDayOfBirth(String name, LocalDate dob) {}
     private Map<NameAndDayOfBirth, Person> entries = ...;
    

    概要

    记录提供了一种不太冗长的方式来创建简单的数据持有人。 常见的用例是多个返回值,复合映射键或数据传输对象。 有关记录的更多背景信息,我推荐Brian Goetz撰写的这篇文章

    您可以在GitHub上找到示例代码。

    翻译自: https://www.javacodegeeks.com/2020/05/looking-at-java-records.html

    java 实习记录

    展开全文
  • java.lang.reflect.LogRecord的getThreadID()方法用于获取消息起源线程标识符。此方法有助于识别生成记录器消息线程。用法:public int getThreadID()参数:此方法不接受任何内容。返回:此方法返回线程ID。以下...

    java.lang.reflect.LogRecord的getThreadID()方法用于获取消息起源线程的标识符。此方法有助于识别生成记录器消息的线程。

    用法:

    public int getThreadID()

    参数:此方法不接受任何内容。

    返回:此方法返回线程ID。

    以下示例程序旨在说明getThreadID()方法:

    示例1:

    // Java program to illustrate

    // getThreadID() method

    import java.util.logging.Level;

    import java.util.logging.LogRecord;

    public class GFG {

    public static void main(String[] args)

    {

    // Create LogRecord object

    LogRecord logRecord

    = new LogRecord(Level.SEVERE,

    "Hello Logger");

    // get Thread ID

    int id = logRecord.getThreadID();

    // print

    System.out.println(

    "Thread ID = "

    + id);

    }

    }

    输出:

    Thread ID = 1

    示例2:

    // Java program to illustrate

    // getThreadID() method

    import java.util.logging.Level;

    import java.util.logging.LogRecord;

    public class GFG {

    public static void main(String[] args)

    {

    // start the Thread

    Thread thread1 = new Thread1();

    thread1.start();

    // Create LogRecord object

    LogRecord logRecord

    = new LogRecord(Level.SEVERE,

    "Hello Logger");

    logRecord.setThreadID((int)thread1

    .getId());

    // get Thread ID

    int id = logRecord.getThreadID();

    // print

    System.out.println(

    "Thread ID = "

    + id);

    }

    }

    class Thread1 extends Thread {

    public void run()

    {

    System.out.println("Thread is running...");

    }

    }

    输出:

    Thread is running...

    Thread ID = 11

    展开全文
  • Java 14是在几周前问世,它引入了Record类型,它是一个不变数据载体类,旨在容纳一组固定字段。 请注意,这是一种预览语言功能 ,这意味着必须使用--enable-preview标志在Java编译器和运行时中显式启用它。 ...

    java 记录考勤记录

    Java 14是在几周前问世的,它引入了Record类型,它是一个不变的数据载体类,旨在容纳一组固定的字段。 请注意,这是一种预览语言功能 ,这意味着必须使用--enable-preview标志在Java编译器和运行时中显式启用它。

    我将直接介绍一个Book记录示例,该记录旨在保存书名,作者,出版日期和价格。 这是记录类的声明方式:

     public record Book(String title, String author, LocalDate publishDate, double price) {  } 

    您可以使用javap查看编译器自动生成的代码:

     public final class Book extends java.lang.Record { 
       public Book(java.lang.String, java.lang.String, java.time.LocalDate, double ); 
       public java.lang.String title(); 
       public java.lang.String author(); 
       public java.time.LocalDate publishDate(); 
       public double price(); 
       public java.lang.String toString(); 
       public final int hashCode(); 
       public final boolean equals(java.lang.Object);  } 

    如上所示,编译器自动生成了构造函数,getter方法, hashCodeequalstoString ,从而使我们不必键入很多样板代码。

    但是,记录不仅可以节省键入时间。 它们还使您的意图明确了,您希望将不可变数据项建模为一组相关字段。

    用于现场验证的紧凑型构造器

    现在,假设您要向记录添加验证和默认值。 例如,您可能要验证未以负价或未来发布日期创建Book记录。 可以使用紧凑的构造函数来完成此操作,如下所示:

     public record Book(String title, String author, LocalDate publishDate, double price) { 
       //compact constructor (no parameter list), used for validation and setting defaults 
       public Book { 
         if (price < 0.0 ) { 
           throw new IllegalArgumentException( "price must be positive" ); 
         } 
         if (publishDate != null && publishDate.isAfter(LocalDate.now())) { 
           throw new IllegalArgumentException( "publishDate cannot be in the future" ); 
         } 
      this .author = author == null ? "Unknown" : author; 
       }  } 

    紧凑的构造函数没有参数列表。 它验证价格和发布日期,并为作者设置默认值。 在此构造函数中未分配的字段(即titlepublishDateprice )在此构造函数的末尾隐式初始化。

    替代构造函数和其他方法

    记录使您可以定义其他方法,构造函数和静态字段,如下面的代码所示。 但是,请记住,从语义上说,一条记录被设计为数据载体,因此,如果您觉得要添加额外的方法,则可能是需要一个类而不是一条记录。

     public record Book(String title, String author, LocalDate publishDate, double price) { 
       // static field 
       private static final String UNKNOWN_AUTHOR = "UNKNOWN" ; 
       // compact constructor, used for validation and setting defaults 
       public Book { 
         if (price < 0 ) { 
           throw new IllegalArgumentException( "price must be positive" ); 
         } 
         if (publishDate != null && publishDate.isAfter(LocalDate.now())) { 
           throw new IllegalArgumentException( "publishDate cannot be in the future" ); 
         } 
         this .author = author == null ? UNKNOWN_AUTHOR : author; ? UNKNOWN_AUTHOR : author; 
       } 
       // static factory constructor 
       public static Book freeBook(String title, String author, LocalDate publishDate) { 
         return new Book(title, author, publishDate, 0.0 ); 
       } 
       // alternative constructor, without an author 
       public Book(String title, LocalDate publishDate, double price) { 
         this (title, null , publishDate, price); 
       } 
       // additional method to get the year of publish 
       public int publishYear() { 
         return publishDate.getYear(); 
       } 
       // override toString to make it more user friendly 
       @Override 
       public String toString() { 
         return String.format( "%s (%tY) by %s for £%.2f" , title, publishDate, author, price); 
       }  } 

    翻译自: https://www.javacodegeeks.com/2020/04/java-14-records.html

    java 记录考勤记录

    展开全文
  • 这个Android AudioRecord录音功能是小编自己项目中使用,因为以后要经常用到,因此想把AudioRecord的使用作为笔记记录下来,小编将Android录音功能写在了Service类里面会更加科学实用,因为可以后台录音,下面是小...

    这个Android AudioRecord录音功能是小编自己项目中使用的,因为以后要经常用到,因此想把AudioRecord的使用作为笔记记录下来,小编将Android录音功能写在了Service类里面会更加科学实用,因为可以后台录音,下面是小编的代码,代码可以直接拿来使用!

    AudioRecord录制的为“.pcm”格式的文件,需要将它转码成mp3或其它格式的语音文件才能在网页或播放器上播放,后续本站会发布pcm格式转mp3格式语音文件的文章供大家学习!

    一:在Service实现AndroidRecord录音功能package com.xuanyin.homektv.service;

    import android.app.Service;

    import android.content.Intent;

    import android.media.AudioFormat;

    import android.media.AudioRecord;

    import android.media.MediaRecorder;

    import android.os.Binder;

    import android.os.IBinder;

    import android.support.annotation.Nullable;

    import android.util.Log;

    import com.tpyyes.MainActivity;

    import java.io.FileNotFoundException;

    import java.io.FileOutputStream;

    public class RecorderService extends Service {

    private AudioRecord audioRecord;

    //缓冲区大小

    private int bufferSize;

    //录音线程

    private Thread recordThread = null;

    //外部传进来的mp3文件名称

    private String songName = "";

    //录音标记

    private boolean isRunning = true;

    //存储语音数据

    private byte[] voiceData;

    @Nullable

    @Override

    public IBinder onBind(Intent intent) {

    return new Binder();

    }

    //启动Service,会启动录音功能

    @Override

    public int onStartCommand(Intent intent, int flags, int startId) {

    if(intent.hasExtra("SONG_NAME")){

    songName = intent.getStringExtra("SONG_NAME");

    }

    startRecorder();

    return START_STICKY;

    }

    //开始录音

    public void startRecorder(){

    //获取最适合的缓冲大小(小编在原有基础上放大了2倍)

    bufferSize = AudioRecord.getMinBufferSize(16000,AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT);

    //存储语音数据的数组

    voiceData = new byte[bufferSize];

    //创建录音对象(参数为:输入源为麦克风,赫兹16000,音道,比特数)

    audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,16000, AudioFormat.CHANNEL_IN_MONO,

    AudioFormat.ENCODING_PCM_16BIT,bufferSize);

    //录音

    audioRecord.startRecording();

    //录音线程

    recordThread = new Thread(new Runnable() {

    @Override

    public void run() {

    writeAudioToDirectory();

    }

    },"recorder Thread");

    //开启线程

    recordThread.start();

    }

    //将录音文件写入文件夹

    private void writeAudioToDirectory() {

    //文件存储位置

    String filePath = MainActivity.MY_SONGS_VOICE + songName +"_"+(System.currentTimeMillis() / 1000) + ".pcm";

    FileOutputStream os = null;

    try {

    os = new FileOutputStream(filePath);

    } catch (FileNotFoundException e) {

    e.printStackTrace();

    }

    int read = 0;

    //循环写入文件

    while(isRunning){

    Log.e("writeAudioToDirectory2","在写入语音文件:"+isRunning);

    read = audioRecord.read(voiceData,0,bufferSize);

    if(AudioRecord.ERROR_INVALID_OPERATION != read){

    try{

    os.write(voiceData);

    Log.e("writeAudioToDirectory","在写入语言文件");

    }catch (Exception ex){

    ex.printStackTrace();

    }

    }

    }

    }

    //停止录音

    public void stopRecorder(){

    isRunning = false;

    if(recordThread != null){

    recordThread.interrupt();

    recordThread = null;

    }

    if(audioRecord != null){

    audioRecord.stop();

    audioRecord.release();

    audioRecord = null;

    }

    }

    //销毁录音对象和线程

    @Override

    public void onDestroy() {

    super.onDestroy();

    stopRecorder();

    Log.e("writeAudioToDirectory33","在写入文件:"+isRunning+"==="+songName);

    }

    }

    二:注册Service

    如果在Service中想要想要开启AudioRecord录音功能,必须要在AndroidManifest.xml中注册Service,代码如下:

    三:在AndroidManifest.xml中给与录音权限

    四:在Fragment中启动或关闭AudioRecord录音功能(当然也可以在Activity中使用)//启动或关闭录音,可用在Click点击事件中

    private void recordUserVoice() {

    String luyinStr = weixin_luyin.getText().toString();

    Intent intent = new Intent(getActivity(), RecorderService.class);

    //开启录音

    if(luyinStr.equals("开始录音")){

    //可以将文件名传入到Service中,例如

    intent.putExtra("SONG_NAME","测试歌曲名称");

    getActivity().startService(intent);

    }else{ //关闭录音

    weixin_luyin.setText("开始录音");

    getActivity().stopService(intent);

    }

    }

    来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/android/986.html

    展开全文
  • java实际记录

    2016-02-01 16:47:56
    java相关,自己一些记录/** * 会员批量导入内部系统流程 * @param record * @param operateName * @param listBusType */
  • https://openjdk.java.net/jeps/359概述了Java的新功能,该功能可能会/将在某些将来的Java版本中实现。 JEP建议使用一种新的“类别”:记录。 JEP中的示例内容如下: record Range( int lo, int hi) { public ...
  • Java记录

    2020-06-15 18:29:24
    https://openjdk.java.net/jeps/359概述了新的Java功能,该功能可能会/将在某些将来的Java版本中实现。 JEP建议使用一种新型“班级”:记录。 JEP中示例内容如下: record Range( int lo, int hi) { public ...
  • 建议的Java记录的工作仍在继续。 Brian Goetz 昨天在OpenJDK amber-spec-experts邮件列表上启动了三个... 另一个线程为提议java.lang.Record提供了初始草案规范,这是本文主题。 提议用于java.lang.Recor...
  • 一个简单范围记录如下所示: record Range( int from, int to) {} 记录定义实际上与具有以下内容最终类相同: 不变领域 公共访问者 构造函数 equals(),hashCode()和toStri...
  • 该项目提供了一些实用程序方法,使使用Java记录器更加容易。 您可能最感兴趣是: LoggerUtils.getLogger(loggerName, loggerFileName, ) setLogLevel(Logger, LogLevel) fyi:将'loggerName'视为一个单例; 您...
  • 查看Java记录

    2020-06-11 22:45:39
    一个简单范围记录如下所示: record Range( int from, int to) {} 记录定义实际上与具有以下内容最终类相同: 不变领域 公共访问者 构造函数 equals(),hashCode()和toString()实现 ...
  • 1.record概念Record是从使用者角度来说,如使用PhysicalRowIdManager插入一个10000byteRecordbyte[] data = TestUtil.makeRecord(10000, (byte) 1);Location loc = physMgr.insert( data, 0, data.length );每一...
  • 目录java14新特性instanceof模式匹配Switch表达式记录类型(Record Type)引入文本块作为预览特性保留NullPointerException总结 java14新特性 在JDK14中新增了以下16个新特性: 305: instanceof模式匹配 (预览....
  • 同事回答我说:“首先,带着问题去看,然后根据Java的设计模式,去理解源码的实现和设计。”之后他和我谈到数据库记录到对象的映射,告诉我Datamapper和recordactive是很好的两种可以用于关系映射的架构设计。 我在...
  • Java 14:记录

    2020-06-11 21:45:39
    Java 14是在几周前问世,它引入了Record类型,它是一个不变数据载体类,旨在容纳一组固定字段。 注意,这是预览语言功能 ,这意味着必须使用--enable-preview标志在Java编译器和运行时中显式启用它。 我将...
  • 想要把每条记录每个元素(每对值)分离并存储在record中。我定义的record的类型是Map,Float>record;初始化为:record = new TreeMap,Float>();但接下来不知道怎么做了,请大侠指教,小妹不胜感激!
  • ORACLE中RECORD、VARRAY、TAB、IS REF CURSORLE使用及实例详解create or replaceprocedure PRO_RECORD_ROW_TAB_EXAMPLEIS--记录一行二列数据type V_REC is RECORD(FACT_NO char(4),FACT_ODR_NO char(20));...
  • Java 14 –记录数据类

    2020-06-04 10:22:19
    本文介绍了JEP 359中定义的Java 14新功能–记录或数据类。 PS此record数据类是预览功能 为什么要记录Java太冗长,如果要声明一个class,则需要创建许多繁琐且重复方法,例如构造函数,访问器, equals() , ...
  • String sqlStr =“delete from record1 where id =’”+id+"’";//删除记录,牛皮
  • 以下仅为我在正式通过javaapi来使用hive前问题记录 Hive-Hadoop-MySQL安装,请阅读这里 hive-site.xml新添加(以下都是默认配置): &amp;amp;amp;amp;amp;amp;lt;property&amp;amp;amp;amp;amp;amp;gt; ...
  • 首先记录一下lombok,它不仅要引入pom依赖,也要在IDEA里面下载Lombok插件后才能生效 lombok封装了: getter()/ setter() toString() equals()和 hanshCode() 这个错误信息是:初始化异常 这里...
  • 当过程包中定义了 Type( record ), 并作为包内存储过程出参,如何通过Java进行存储过程调用?本次对此问题进行了验证。
  • java读取DNS中各种解析记录

    千次阅读 2017-06-02 15:00:37
    使用到了dnsjava-版本.jar包. public class ARecordTest { public static void main(String[] args){ ... Record [] records =null; Lookup lookup = new Lookup("csdn.com", Type.MX); lookup.run();
  • oracle中查询日期记录,使用java.util.date日期格式找不到数据。 解决方法:使用java.sql.date日期格式查找数据 代码: import java.sql.Date; import java.util.Calendar; public List<Record> list...
  • 假设要架构一个联系人管理项目,其核心管理对象是“人(Person)”,但是人属性繁多,例如应用在娱乐行业,有...Record 1. ----------- _id:主键, nickname:昵称, realname:真实姓名, birthday:生日, height:身高, h

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 328
精华内容 131
关键字:

java的记录record

java 订阅