(JAVA)怎么可以实例化接口?这个是匿名内部类吗?
@tcxu 你好,想跟你请教个问题:
package nimingneibulei;
public interface IStringDeal {
public String filterBlankChar(); //声明过滤字符串中的空格的方法(抽象方法)
}
package nimingneibulei;
public class OutString {
public static void main(String[] args) {
final String sourceStr = "吉林省 明日 科技有限公司——编程 词典!";//全局常量
IStringDeal s = new IStringDeal() { // 编写匿名内部类
@Override
public String filterBlankChar() {
// TODO Auto-generated method stub
String convertStr = sourceStr;
convertStr = convertStr.replaceAll(" ", ""); // 替换全部空格
return convertStr; // 返回转换后的字符串
}
};
System.out.println("源字符串:" + sourceStr);// 输出源字符串
System.out.println("转换后的字符串:" + s.filterBlankChar());// 输出转换后的字符串
}
}
IStringDeal s = new IStringDeal():第一:为什么接口可以实例化?第二:IStringDeal s = new IStringDeal()是匿名内部类吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
这段回答没看懂,还有这段回答中什么叫“不续命名”?
回复
匿名内部类,匿名内部类也就是没有名字的内部类。正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写。
回答问题:
1. 在楼主所示代码中,对象 s 是由(根据)编写好的、通过定义好 抽象方法 public String filterBlankChar()来 实现 接口 IStringDeal 的匿名内部类创建的。就是说,由运算符 new 所引出的构造方法,是一个通过定义好 抽象方法 public String filterBlankChar() 来实现 接口 IStringDeal() 的、不续命名的 类的构造方法。所生成的对象 s 的类型是: IStringDeal。这里,不是实例化接口,而是实例化一个实现接口的、未命名的类。
2."IStringDeal s = new IStringDeal()是匿名内部类吗?"
仔细查看代码发现,紧接其后的一对花括号,即 IStringDeal s = new IStringDeal(){...} 内,给出了抽象方法public String filterBlankChar()的定义。其中,IStringDeal(),表示这个可以被实例化的匿名类的默认的构造方法。
为什么IStringDeal s = new IStringDeal()是匿名内部类呢?
回复
java语法是这么规定的,这种形式就叫匿名内部类
第一:接口不可以实例化,实例化的一个匿名类,这个类实现了这个接口;
第二:是的