小编sum*_*dha的帖子

桥接方法如何工作?

我是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)

java oop generics

11
推荐指数
3
解决办法
496
查看次数

单一责任原则:班级或方法级别

我在理解单一责任原则方面存在问题.应该在班级或方法级别应用SRP.假设我有学生班,我需要创建学生,更新学生和删除学生.如果我创建一个具有这三个操作方法的服务类,这会破坏SRP原则.

oop design-principles

9
推荐指数
1
解决办法
2845
查看次数

斐波纳契数是负数

我使用动态编程技术编写了以下代码,但是当我运行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)

java memoization dynamic-programming fibonacci

2
推荐指数
2
解决办法
2476
查看次数

具有通用类型的Java通用映射作为键/值

我想编写一个方法,它将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)

我收到编译器错误,如代码中所示.

java generics collections

-1
推荐指数
1
解决办法
2503
查看次数