我们假设我们有两个类:
class X { }
class Y extends X { }
Run Code Online (Sandbox Code Playgroud)
在main函数中创建一个数组:
Y[] yArr = new Y[3] // created Y's class objects array
X[] xArr = yArr;
xArr[0]= new X() // VALID. WHY?
Run Code Online (Sandbox Code Playgroud)
怎么会这样??因为xArr引用Y[]对象并且为了我的理解它不能创建X对象.
好的,我在这个网站上读到了这个问题,并没有回答我的主要观点.
假设我们喜欢这样:
public <T extends Number> void someMethod(List<T> list)
Run Code Online (Sandbox Code Playgroud)
和
public void someMethod(List<? extends Number> list)
Run Code Online (Sandbox Code Playgroud)
考虑到我不需要任何下限或上限列表.所以拒绝这些东西,它在这种情况下有什么区别?因为?是未知的列表,T是T的列表,但是从这一方面来看,它们是相似的(上述方法).
(Ps我知道它之间的差异,但在这种情况下它看起来非常相似,因为我认为使用什么并不重要.)
例如,我们有一个类Test,它使用参数重载2个方法(只是称之为ambiguousMethod):1方法有short,另一个有int,但有不同的类型.在这种情况下,请考虑该类型是short和int.然后我从main调用这个方法,如下所示:
double d = new Test.ambiguousMethod(3);
Run Code Online (Sandbox Code Playgroud)
那么将调用哪种方法?使用INT还是SHORT返回类型?
谢谢
这是我的代码:
Method a = new Method();
double d= a.print(3);
class Method {
public int print(int a)
{
return a;
}
public short print(short b){
return b;
}
}
Run Code Online (Sandbox Code Playgroud) 好的,例如我有这个代码:
class Document {
// blablabla
}
Run Code Online (Sandbox Code Playgroud)
我的主要人物:
Object cl =Class.forName("Document"); // throws ClassNotFoundException: Document
Run Code Online (Sandbox Code Playgroud)
为什么找不到我的班级定义?