Java 实现没有接口类型参数的接口
ApacheStorm有一个带有非类型映射的接口Java 实现没有接口类型参数的接口,java,apache-storm,Java,Apache Storm,ApacheStorm有一个带有非类型映射的接口 //org.apache.storm.topology.IBasicBolt public interface IBasicBolt extends IComponent { void prepare(Map stormConf, TopologyContext context); ... } 我想在抽象类中添加一个类型化映射 public abstract class MyClass implements IBasicBolt
//org.apache.storm.topology.IBasicBolt
public interface IBasicBolt extends IComponent {
void prepare(Map stormConf, TopologyContext context);
...
}
我想在抽象类中添加一个类型化映射
public abstract class MyClass implements IBasicBolt {
@override
public void prepare(Map<String, Object> stormConf, TopologyContext context) {
}
}
有没有办法在不添加storm类的情况下做到这一点?适用于这种情况,尽管在您的用例中可能不完全是您想要的。但这是一个值得了解的模式,可能会引导你朝着正确的方向前进
意图
将类的接口转换为客户端期望的另一个接口。Adapter允许由于接口不兼容而无法正常工作的类一起工作
范例
考虑目标接口,即您希望编程的目标接口:
public interface IMyBasicBolt {
void prepare(Map<String, Object> stormConf, String other);
}
适配器BasicBoltAdapter的使用示例:
在您的案例中,没有严格要求将接口IMyBasicBolt用于您的目标接口。但是,在可能的情况下,编程到一个接口通常是好的。适合这种情况,尽管在您的用例中可能不完全是您想要的。但这是一个值得了解的模式,可能会引导你朝着正确的方向前进
意图
将类的接口转换为客户端期望的另一个接口。Adapter允许由于接口不兼容而无法正常工作的类一起工作
范例
考虑目标接口,即您希望编程的目标接口:
public interface IMyBasicBolt {
void prepare(Map<String, Object> stormConf, String other);
}
适配器BasicBoltAdapter的使用示例:
在您的案例中,没有严格要求将接口IMyBasicBolt用于您的目标接口。但在可能的情况下,编程到接口通常是好的
IBasicBolt basicBolt = new IBasicBolt() {
@Override
public void prepare(Map stormConf, String other) {
System.out.println(stormConf.toString() + " " + other);
}
};
Map<String, Object> map = new HashMap<>();
map.put("MapKeyTest", new Object());
IMyBasicBolt myBasicBolt = new BasicBoltAdapter(basicBolt);
myBasicBolt.prepare(map, "Test");