为啥 heroku 会给我这个“不兼容的类型”错误?
Posted
技术标签:
【中文标题】为啥 heroku 会给我这个“不兼容的类型”错误?【英文标题】:Why does heroku give me this "incompatible type" error?为什么 heroku 会给我这个“不兼容的类型”错误? 【发布时间】:2021-07-25 23:06:11 【问题描述】:我正在尝试在 Heroku.com 上部署我的 discord 机器人,但是我收到一个奇怪的错误... 这是引发错误的类的代码:
package main.Events.lavaplayer;
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
import com.sedmelluq.discord.lavaplayer.track.playback.MutableAudioFrame;
import net.dv8tion.jda.api.audio.AudiosendHandler;
import org.jetbrains.annotations.Nullable;
import java.nio.ByteBuffer;
public class AudioPlayerSendHandler implements AudioSendHandler
private final AudioPlayer audioPlayer;
private final ByteBuffer buffer;
private final MutableAudioFrame frame;
public AudioPlayerSendHandler(AudioPlayer audioPlayer)
this.audioPlayer = audioPlayer;
this.buffer = ByteBuffer.allocate(1024);
this.frame = new MutableAudioFrame();
this.frame.setBuffer(buffer);
@Override
public boolean canProvide()
return this.audioPlayer.provide(this.frame);
@Nullable
@Override
public ByteBuffer provide20MsAudio()
return this.buffer.flip();
@Override
public boolean isOpus()
return true;
这段代码在使用 Intellij 编译时没有给我任何问题,但是当我尝试将它部署到 Heroku 时,他们给了我这个错误:
错误:不兼容的类型:java.nio.Buffer 无法转换为 @org.jetbrains.annotations.Nullable java.nio.ByteBuffer 返回 this.buffer.flip();
【问题讨论】:
【参考方案1】:flip
返回 Buffer
而不是 ByteBuffer,因此需要强制转换
public ByteBuffer provide20MsAudio()
return (ByteBuffer) buffer.flip();
【讨论】:
你不能用不太具体的类型覆盖返回类型。 虽然我很好奇,但为什么 Intellij 编译器没有将此标记为错误并编译一切正常? Eclipse(有自己的编译器)抱怨。 IntelliJ 可能对返回类型没有那么严格......以上是关于为啥 heroku 会给我这个“不兼容的类型”错误?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在我制作折线图时,plotly express 会给我一个属性错误?