当前位置: 技术问答>java相关
苦思:自定义接口的应用问题。
来源: 互联网 发布时间:2015-10-30
本文导语: Interface AcceptMsg{public void acceptMsg(String info); } public class Login extends JFrame implements AcceptMsg 中实现了acceptMsg()方法 在其他类中看到这样的运用: AcceptMsg container=(AcceptMsg)msgList.get(acceptId); //msgList is a hashTable,...
Interface AcceptMsg{public void acceptMsg(String info); }
public class Login extends JFrame implements AcceptMsg 中实现了acceptMsg()方法
在其他类中看到这样的运用:
AcceptMsg container=(AcceptMsg)msgList.get(acceptId);
//msgList is a hashTable, 通过get()取到String
container.acceptMsg(rowMsg) ;
我很奇怪这样的应用,好像把一个String转成接口直接调用。接口在应用时候不是必须用类来实现。例如Map m = new HashTable();
问题是这个程序可以运行。
------------------------------------
但是我自己试验定义接口
public interface IupdateFrame {
public void dataModelUpdate(String msg);
}
实现用
public class Frame1 extends JFrame implements IupdateFrame {
。。。。。
public void dataModelUpdate(String msg) {
String msg1 = new String(msg);
if(msg1.startsWith("1"))
System.out.println("111111111111111")
}
。。。
}
应用和上面的类似不通过编译。
IupdateFrame upf = (IupdateFrame) "111";
upf.dataModelUpdate("1aaaaaaaaaaa");
upf.dataModelUpdate("2bbbbbbbbbbb");
upf.dataModelUpdate("3dddddddddddd");
用下面的才可以成功。
Frame1 f = new Frame1();
f.dataModelUpdate("1aaaaaaaaaaaaaaaaa");
public class Login extends JFrame implements AcceptMsg 中实现了acceptMsg()方法
在其他类中看到这样的运用:
AcceptMsg container=(AcceptMsg)msgList.get(acceptId);
//msgList is a hashTable, 通过get()取到String
container.acceptMsg(rowMsg) ;
我很奇怪这样的应用,好像把一个String转成接口直接调用。接口在应用时候不是必须用类来实现。例如Map m = new HashTable();
问题是这个程序可以运行。
------------------------------------
但是我自己试验定义接口
public interface IupdateFrame {
public void dataModelUpdate(String msg);
}
实现用
public class Frame1 extends JFrame implements IupdateFrame {
。。。。。
public void dataModelUpdate(String msg) {
String msg1 = new String(msg);
if(msg1.startsWith("1"))
System.out.println("111111111111111")
}
。。。
}
应用和上面的类似不通过编译。
IupdateFrame upf = (IupdateFrame) "111";
upf.dataModelUpdate("1aaaaaaaaaaa");
upf.dataModelUpdate("2bbbbbbbbbbb");
upf.dataModelUpdate("3dddddddddddd");
用下面的才可以成功。
Frame1 f = new Frame1();
f.dataModelUpdate("1aaaaaaaaaaaaaaaaa");
|
问题的关键就在于这句话:
AcceptMsg container=(AcceptMsg)msgList.get(acceptId);
而你的应用是
IupdateFrame upf = (IupdateFrame) "111";
由于interface can't have constructors 所以,你的用法是不能通过编译得。
而samplet中AcceptMsg container=(AcceptMsg)msgList.get(acceptId);
相信是直接把
msgList.get(acceptId); 返回的塑造成一个AcceptMsg 的对象了。
其中蕴含了很多技巧。
AcceptMsg container=(AcceptMsg)msgList.get(acceptId);
而你的应用是
IupdateFrame upf = (IupdateFrame) "111";
由于interface can't have constructors 所以,你的用法是不能通过编译得。
而samplet中AcceptMsg container=(AcceptMsg)msgList.get(acceptId);
相信是直接把
msgList.get(acceptId); 返回的塑造成一个AcceptMsg 的对象了。
其中蕴含了很多技巧。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。