我是一名Android开发人员。 阅读一些源代码,我发现了一些我觉得很奇怪的东西。
CharSequence mCharSe;
mCharSe = "hello"; // This works.
这是有效的代码。正确?
这就是我觉得奇怪的事情。我声明了一个名为'myInterface'的接口,如下面的
interface myInterface {
void function();
}
在另一部分中,我写了一些像这样的代码
myInterface mInter;
mInter = "hello"; // This doesn't work
据我所知,Interface只是一组空函数。
'CharsSequence'是一个接口以及'myInterface',
但为什么'myInterface'不能包含'CharSequence'等字符串值?
“CharSequence”如何以及在何处包含或存储值,即使它只是一个“界面”?
提前致谢。
答案 0 :(得分:2)
在CharSequence mCharSe;
之类的声明之后,变量可以保存(引用)任何实现接口CharSequence
的对象。由于String
实现了此接口,因此您可以分配字符串对象。
在您的第二个示例中,String
未实现myInterce
,因此分配无效。
您的措辞也略有不正确。接口不存储任何内容。
答案 1 :(得分:0)
接口不是一组空函数,它的类的蓝色打印。以下是关于界面的一些观点
1.默认情况下,所有全局变量都是public
和final
2.所有非静态方法都是public
和abstract
。方法体仅存在于默认方法和静态方法中
对于你的问题。
String
与您的界面之间没有链接。
myInterce mInter;
mInter = "hello";
这不起作用(编译错误)。
而String
implements
CharSequence
。见。
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence
所以它已经是CharSequence
的孩子了,这就是为什么你的第一次检查会有效。