我是java的新手.我仍然觉得我必须了解很多,所以如果这个问题看起来很愚蠢,请原谅我.现在我正在浏览http://docs.oracle.com/javase/tutorial/java/generics/bridgeMethods.html
在这里,我发现了很多困惑.
public class Node<T> {
public T data;
public Node(T data) {
this.data = data;
}
public void setData(T data) {
System.out.println("Node.setData");
this.data = data;
}
}
public class MyNode extends Node<Integer> {
public MyNode(Integer data) {
super(data);
}
public void setData(Integer data) {
System.out.println("MyNode.setData");
super.setData(data);
}
public static void main(String[] args) {
MyNode mn = new MyNode(5);
Node n = mn; // A raw type - compiler throws an unchecked warning
n.setData("Hello"); // Causes a ClassCastException to …Run Code Online (Sandbox Code Playgroud) 我在理解单一责任原则方面存在问题.应该在班级或方法级别应用SRP.假设我有学生班,我需要创建学生,更新学生和删除学生.如果我创建一个具有这三个操作方法的服务类,这会破坏SRP原则.
我使用动态编程技术编写了以下代码,但是当我运行Fibonacci为220时,我得到一个负数.这个程序有错吗?
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class Fibonaci {
public static void main(String[] args) {
System.out.println(" number ");
long startTime = System.currentTimeMillis();
HashMap<Integer, Integer> memoized = new HashMap<Integer, Integer>();
int fib = fibonanci(220, memoized);
System.out.println(" Total Time "
+ (System.currentTimeMillis() - startTime));
}
private static int fibonanci(int n, HashMap<Integer, Integer> memoized) {
System.out.println(" n " + n);
if (memoized.containsKey(n)) {
return memoized.get(n);
}
if (n <= 0) {
return 0;
}
if (n <= 2) {
return 1; …Run Code Online (Sandbox Code Playgroud) 我想编写一个方法,它将Map作为参数,可以包含任何对象作为其值.我试图使用泛型实现它,但我无法实现它.
下面是我到目前为止尝试过的代码.这个代码作为两种方法: genericTest,我试图实现一个通用的解决方案 nonGenericTest,这是我实际上想要使用通用解决方案,但是没有使用泛型实现.基本上,第二种方法是我想要转换为泛型的方法.
我究竟做错了什么?
import java.util.Iterator;
import java.util.Map;
public class Test {
//V cannot be resolve to a type
public void genericTest(Map<String, V> params) {
}
public void nonGenericTest(Map<String, Object> params) {
Iterator<String> it = params.keySet().iterator();
while (it.hasNext()) {
String key = it.next();
Object value = params.get(key);
if(value instanceof String){
String val1=(String) value;
// do something
}else if(value instanceof Integer){
Integer val1 = (Integer) value;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我收到编译器错误,如代码中所示.