JAVA编程思想中的一些疑问, 本人观点,欢迎留言指正

这是看java编程思想的疑问:

看java编程思想有个疑问1:

Java中普通内部类为何不能有static数据和static字段,也不能包含嵌套类

在百度后摘录总结一下,希望启迪跟我有同样困惑的人同时也可能我是错误的,希望得到指正:
“普通内部类的字段与方法,只能放在类的外部层次上,所以普通的内部类不能有static数据和static字段,也不能包含嵌套类。但是嵌套类可以包含所有这些东西。”(201页原文)

Fields and methods in ordinary inner classes can only be at the outer level of a class, so ordinary inner classes cannot have static data, static fields, or nested classes. However, nested classes can have all of these. (201页英语原文)

我认为:only be at the outer level of a class这句话翻译应该是:

只能是类的外部类级别;

设想一下,内部类如果有静态字段、静态方法、静态类,相当于直接定义在外部类的静态字段、静态方法、静态类;使用它们跟使用普通类含有静态内容是一样的,是外部类点静态字段、点静态方法、点静态类这样的方法调用。但是我们都知道普通内部类的实例化前提是首先实例外部类,外部类都实例化了,再调用静态内容,这是java不提倡的,就跟平时的编程的警告似的,可能是这个原因就直接不让有静态内容了;

好了都是我猜的,希望即使不能充分证明,也能间接记住这个知识点;

看java编程思想有个疑问2:

创建内部类对象的时刻并不依赖于外围类对象的创建

特意找到英文版本:

The point of creation of the inner-class object is not tied to the creation of the outer-class object.
翻译:内部类对象的创建点并不与外部类对象的创建相关联。

解析:是不是说创建外部类不会同步创建内部类,而是你可以很自由,在任意你想真正调用的时刻使用;

看java编程思想有个疑问3:

page 363;关于泛型方法局限的例子代码:
public class LimitsOfInference{
static void f(Map<Person,List<? extends Pet>> petPeople){}
public static void main (String[] args){
//f(New.map());//Does not complie
}
}
原文:【作为参数,传递给另一个方法,这是编译器并不会执行类型推断。在这种情况下,编译器认为i:调用泛型方法后,其返回值被赋给一个Objcet类型变量】
但是我用jdk1.8可以编译,而且能显示出类型,如图
不知道怎么回事
这是因为jdk高,版本优化了,先记录下来,以后慢慢看

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章