Tag: 原型

为什么C需要原型函数而Java不需要?

我参加了Java课程,并试图用K&R教我自己。 到目前为止这么好,但我不明白原型的目的。 请参阅以下代码中的2 //评论: #include float convert(int); **//Why is this needed…** main() { int i; for(i = 0; i <= 300; i += 20) printf("F: %3d C: %6.1f\n",i,convert(i)); system("Pause"); return 0; } float convert(int f) **//When we already have this?** { float c = (5.0/9.0) * (f-32.0); return c; } 在Java中,您将声明一个类似于public static float convert(int f)而根本不需要原型。 […]

这种原始类型分配是否类型安全? List = new ArrayList();

我有一些像这样的代码: @SuppressWarnings({“unchecked”, “rawtypes”}) List theList = new ArrayList(); 这种类型安全吗? 我认为这是安全的,因为我没有将原始类型分配给其他任何东西。 我甚至可以certificate它在调用add时执行类型检查: theList.add(601); // compilation error 我读过“什么是原始类型,我们为什么不使用它?” 但我不认为这适用于此,因为我只使用原始类型创建列表。 之后,我将其分配给参数化类型,那么可能出现什么问题? 还有,这个怎么样? @SuppressWarnings({“unchecked”, “rawtypes”}) List anotherList = new ArrayList(theList);

generics类中的Javagenerics方法

如果在Java中创建generics类(该类具有generics类型参数),您可以使用generics方法(该方法采用generics类型参数)吗? 请考虑以下示例: public class MyClass { public K doSomething(K k){ return k; } } public class MyGenericClass { public K doSomething(K k){ return k; } public List makeSingletonList(K k){ return Collections.singletonList(k); } } 正如您对通用方法所期望的那样,我可以使用任何对象在MyClass实例上调用doSomething(K) : MyClass clazz = new MyClass(); String string = clazz.doSomething(“String”); Integer integer = clazz.doSomething(1); 但是,如果我尝试使用MyGenericClass实例而不指定generics类型,我调用doSomething(K)将返回一个Object ,无论传入的是什么K : MyGenericClass untyped = new […]