gpt4 book ai didi

java - 方法在哪里?

转载 作者:行者123 更新时间:2023-12-01 23:56:52 27 4
gpt4 key购买 nike

我的来源:

private static HashMap<String, Class<?>> mapLogic = new HashMap<String,Class<?>>();

mapLogic.put("s", Packet1.class);
mapLogic.put("a", Packet2.class);

public abstract class Packet {
public abstract void get(ChannelBuffer buffer);
public abstract void send(ChannelBuffer buffer);
}

public class Packet1 extends Packet{

@Override
public void get(ChannelBuffer buffer) {
}


@Override
public void send(ChannelBuffer buffer) {
}

}


public class Packet2 extends Packet{

@Override
public void get(ChannelBuffer buffer) {
}

@Override
public void send(ChannelBuffer buffer) {
}

}

mapLogic.get("s").newInstance().get() <--- 获取或发送不可用

如何获得这些方法?

最佳答案

更改此:

private static HashMap<String, Class<?>> mapLogic = new HashMap<String,Class<?>>();

对此:

private static HashMap<String, Class<? extends Packet>> mapLogic =
new HashMap<String, Class<? extends Packet>>();

这样表达式 mapLogic.get("s")将具有类型 Class<? extends Packet> ,以及表达式 mapLogic.get("s").newInstance()将具有类型 Packet .

现在的方式是表达式 mapLogic.get("s")类型为Class<?> ,以及表达式 mapLogic.get("s").newInstance()类型为Object 。编译器无法判断实际实例将具有运行时类型 Packet1Packet2 ,所以它不知道 get 是什么和send方法应该是。

关于java - 方法在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15455587/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com