首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MetaData恢复java

MetaData恢复java
EN

Stack Overflow用户
提问于 2018-03-27 17:57:24
回答 1查看 86关注 0票数 0

我正在尝试恢复不同媒体文件的metaData,但由于某种原因,我的方法没有按照正确的顺序执行代码。metaData被正确恢复,但返回值为null,因为该方法没有按顺序执行。下面是代码:

代码语言:javascript
复制
public String getMetadata(ObservableList<Media> mediaList, int track){

    mediaList.get(track).getMetadata().addListener((MapChangeListener.Change<? extends String, ? extends Object> ch) -> {
        System.out.println("1");
        String key = ch.getKey(); 
        Object value = ch.getValueAdded();
        if (ch.wasAdded()) {                
            switch (key) {
                case "title":
                    Ptitle = value.toString();
                    System.out.println("2"+Ptitle);
                    break;
                case "artist":
                    Partist = value.toString();
                    System.out.println("3" + Partist);
                    break;
                case "album":
                    Palbum = value.toString();
                    System.out.println("4" + Palbum);
                    break;  
                default:
                    break;
            }
        } 
        System.out.println("1" + Ptitle + " " + Partist + " " + Palbum);
    });

    System.out.println("2" + Ptitle + " " + Partist + " " + Palbum);
    return Ptitle;
}

它正在执行以下操作:System.out.println("2" + Ptitle + " " + Partist + " " + Palbum); return Ptitle;优先于其他任何东西。

这就是返回值。蓝色的圆圈是要返回的,红色的是应该返回的,但是由于一个任务是在执行另一个任务之前执行的,所以它不能正常工作。

EN

回答 1

Stack Overflow用户

发布于 2018-03-27 18:50:44

这段代码

代码语言:javascript
复制
mediaList.get(track).getMetadata().addListener...

将异步执行,因此可能无法立即使用。这就解释了为什么这段代码比任何其他代码都要先执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49519523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档