队列连接已实例化?
Queue Connection Instantiated?
我正在做一个消息队列的例子。当我查看文档时, QueueConnection 是一个接口,但它在示例代码中被实例化。这怎么可能?我知道它扩展了连接接口。所有解释都有助于进一步了解我的知识:)
不完全确定您的具体情况,一些代码可能会有所帮助。
如果您在 EJB 中注入此资源,则该对象可能会指向该接口。
获取连接对象句柄的另一种方法是调用 createConnection() 方法。在这种情况下,对象最终将与接口具有相同的类型。
但就您而言,您从未使用过 new QueueConnection()。
有关如何将对象引用到接口 http://www.tutorialspoint.com/design_pattern/factory_pattern.htm(可用于任何 java 接口)
的更多详细信息,请参阅此示例设计模式
我将重点关注您问题的一个非常具体的部分
QueueConnection is an interface, but it's being instantiated in sample code
考虑以下代码:
public class Program {
public static void main(String[] args){
MyInterface myVar = new MyInterface(){
public void myMethod(){
System.out.println("hello World");
}
};
myVar.myMethod();
}
private interface MyInterface{
void myMethod();
}
}
基本上,一个接口就是一个契约,任何实例化它的 class 都必须履行契约。如果你能写一个匿名 class 你可以让它看起来好像你已经实例化了接口。
你甚至可以做这样的事情(虽然没有用)
public class Program {
public static void main(String[] args){
MyInterface myVar = new MyInterface(){ };
}
private interface MyInterface{ }
}
您可以在此处查看更多相关信息:https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
我正在做一个消息队列的例子。当我查看文档时, QueueConnection 是一个接口,但它在示例代码中被实例化。这怎么可能?我知道它扩展了连接接口。所有解释都有助于进一步了解我的知识:)
不完全确定您的具体情况,一些代码可能会有所帮助。
如果您在 EJB 中注入此资源,则该对象可能会指向该接口。
获取连接对象句柄的另一种方法是调用 createConnection() 方法。在这种情况下,对象最终将与接口具有相同的类型。
但就您而言,您从未使用过 new QueueConnection()。
有关如何将对象引用到接口 http://www.tutorialspoint.com/design_pattern/factory_pattern.htm(可用于任何 java 接口)
的更多详细信息,请参阅此示例设计模式我将重点关注您问题的一个非常具体的部分
QueueConnection is an interface, but it's being instantiated in sample code
考虑以下代码:
public class Program {
public static void main(String[] args){
MyInterface myVar = new MyInterface(){
public void myMethod(){
System.out.println("hello World");
}
};
myVar.myMethod();
}
private interface MyInterface{
void myMethod();
}
}
基本上,一个接口就是一个契约,任何实例化它的 class 都必须履行契约。如果你能写一个匿名 class 你可以让它看起来好像你已经实例化了接口。
你甚至可以做这样的事情(虽然没有用)
public class Program {
public static void main(String[] args){
MyInterface myVar = new MyInterface(){ };
}
private interface MyInterface{ }
}
您可以在此处查看更多相关信息:https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html