小编Rea*_*tic的帖子

尝试ConcurrentHashMap.get()时出现NullPointerException

我有以下代码:

public class MyEvent implements org.apache.camel.Processor
{
    static private final Map<Long, String> obj = new ConcurrentHashMap<Long, String>();

    @PostConstruct
    public void postConstruct() 
    {
        for (Object object : cacheList) 
        {
            obj.put(object.getId(), object.getName());
        }
    }

    @Override
    public void process(Exchange exchange) throws Exception 
    {
        synchronized (obj) 
        {
            String value = obj.get(number);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有时在开始时,我有一个NullPointerException在这一行:

String value = obj.get(number);
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么我会收到此错误,如何解决?

Java版本1.6.0_32

java spring

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

用static关键字覆盖实例方法

如何在子类中将超类的实例方法重写为静态?我认为这是不可能的,但是有任何间接方式吗?

public class A {
   public void test(){
       System.out.println("");
   }
}

public class B extends A{
    public static void test(){//test() in B cannot override test() in A 
    //overriding method is static

   }
}
Run Code Online (Sandbox Code Playgroud)

java

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

GC不会从weakhashmap中删除对象

我有一个测试应用程序,其中一个类存储一个地图,一个按钮调用该类的方法:

Map<Object, Object> weakMap = new WeakHashMap<Object, Object>();
Run Code Online (Sandbox Code Playgroud)

按钮执行此操作:

public void fillWeakHashMap(int size) {
    List<String> createObjects = (List<String>) createObject(size);
    for (Object ob : createObjects) {
        weakMap.put(ob, ob);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以带有地图的主类生活,但我放在它上面的对象是用不同的方法创建的,因为WeakHashMap我认为退出方法后fillWeakHashMap,GC中的键/对象将被清除.

我打开VisualVM-> VisualGC并单击Monitor-> PerformGC 10次,旧空间几乎已满,这意味着GC不清除这些对象.那么我做错了什么?

java garbage-collection weakhashmap

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

如何在我的数组中存储值?

我正在尝试创建一个程序,允许用户在输入数组的行和列,输入数组内的值以及输出数组之间进行选择.一切正常,直到我尝试输出数组,它总是输出0.如何正确打印值?

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    char ans='y';
    int column=0, row=0;
    do{
        char c = menu(sc);
        int array[][] = new int [row] [column];
        switch (Character.toLowerCase(c))
        {
            case 'a': System.out.print("Enter row size ");
                      row=sc.nextInt();
                      System.out.print("Enter column size ");
                      column=sc.nextInt();
                      System.out.print("Row and Column "+row+" "+column);
                      break;
            case 'b': for(int r=0;r<row;r++)
                      {
                          for(int col=0;col<column;col++)
                          {
                              System.out.print("Enter value for row "+r+" column "+col+": ");
                              array[r][col]=sc.nextInt();
                          }
                      }
                      break;
            case 'c': for(int r=0; r<array.length; r++) 
                      {
                          for(int col=0; col<array[r].length; …
Run Code Online (Sandbox Code Playgroud)

java arrays

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

java构造函数可以将接口作为参数

我正在尝试Java接口,以下代码给出了错误.

在类中,构造函数将Map作为参数

public class ClassA{
  private Map<String,InterfaceA> testMap;
  ClassA(Map<String,InterfaceA> testMap){
    this.testMap=testMap;
  }
}



public class ClassB{
  ClassA testA = new ClassA(new HashMap<String,ImplmntsInterfaceA>); //1st declaration
  Map<String,ImplmntsInterfaceA> testMap=new HashMap<String,ImplmntsInterfaceA>(); //Second declaration
  ClassA testB = new ClassA(testMap);
}
Run Code Online (Sandbox Code Playgroud)

ImplmntsInterfaceA是一个实现的类InterfaceA.

这两个ClassA声明都给出了错误,首先建议将Map构造函数更改为,HashMap然后再次要求将InterfaceA泛型替换为ImplmntsInterfaceA.

有人可以帮忙解决它为什么不起作用?

谢谢 :)

java constructor interface

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

尽管存在不相等的条件,但字符串被添加到ArrayList

我正在将我direcList分成两个子列表firstDirec,secondtDirecNew direction发现一个特殊的字符串时.

然后我通过不将它们添加到新的ArrayLists 来过滤列表中的特定字符串timeListFirst and timeListSecond.一切正常firstDirec,并且元素没有添加到timeListFirst,但我secondtDirec在这个位置的列表面临问题:

if (!(mergeLine.equals(otherDirection))
Run Code Online (Sandbox Code Playgroud)

因为在这个位置mergeLine等于"Ravensbusch",所以是 otherDirection.尽管如此,这个字符串正被添加到timeListSecond.有人可以解释我的错误吗?

mergeLine值:

在此输入图像描述

otherDirection值:

在此输入图像描述

        for (String keyLine : direcList) {
            if (keyLine.startsWith("New direction")) {
                int index = direcList.indexOf(keyLine);
                // direcArray.remove(index);
                List<String> firstDirec = direcList.subList(0, index);
                List<String> secondtDirec = direcList.subList(index,
                        direcList.size() - 1); // This part wih New
                                                // Direction.

                ArrayList<String> timeListFirst = new ArrayList<String>();
                for (String mergeLine …
Run Code Online (Sandbox Code Playgroud)

java arraylist

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

找出直角三角形的斜边

分配:

编写一个名为Hypo的方法,该方法计算直角三角形的斜边。此方法接受两个表示三角形边的双精度值。Hypo方法计算并在屏幕上显示直角三角形第3边的值。方法main()应该使用输入框从用户读取两个双精度值,然后调用Hypo,将这两个值作为参数发送给它。然后Hypo()将结果在输出框中打印到屏幕上。main()和Hypo()都位于同一类中,名为A2。


这是我的代码。没有错误,但是没有任何输出,您能帮我吗?

import java.util.Scanner;
import javax.swing.JOptionPane;

public class A2 
{

    public static void main(String[] args)
    {

        double height=Double.parseDouble(JOptionPane.showInputDialog("Enter       1st side of triangle: "));

        double base=Double.parseDouble(JOptionPane.showInputDialog("Enter 2nd     side of triangle: "));

        RightTriangle newTriangle = new RightTriangle(height, base);



        newTriangle.getHypotenuse();
        double hypotenuse = newTriangle.getHypotenuse();


        JOptionPane.showMessageDialog(null,hypotenuse);

    }
    public double height;
    public double base;
    public final double hypotenuse = Math.sqrt(Math.pow(height, 2) + Math.pow(base, 2));


    public A2(double triHeight, double triBase)
    {
        height = triHeight;
        base = triBase;
    }

    public double getHypotenuse()
    {
        return hypotenuse;
    } …
Run Code Online (Sandbox Code Playgroud)

java

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

在迭代时删除和添加对象列表

我试图从列表中删除对象,我得到以下异常:

failure:java.util.ConcurrentModificationException null
Run Code Online (Sandbox Code Playgroud)

这就是我尝试从列表中删除对象的方法:

private List<testVO> removeDuplicateEntries(List<testVO> sessionList,List<testVO> dbList){


        for (Iterator<testVO> dbIterator = dbList.listIterator(); dbIterator.hasNext(); ) {
            testVO voDB = dbIterator.next();

            for (Iterator<testVO> sessionIterator = sessionList.iterator(); sessionIterator.hasNext();) {
                testVO voSession = (testVO) sessionIterator.next();

                if(voDB.getQuestionID().intValue() == voSession.getQuestionID().intValue()){
                    //remove the object from sesion list
                    sessionIterator.remove();
                    //Add the object from DB to session list
                    sessionList.add(voDB);
                }

            }

        }

        return sessionList;
    }
Run Code Online (Sandbox Code Playgroud)

我想删除当前的副本sessionList并添加来自的重复项dbList.

java listiterator

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

带有手绘线条的 HTML5 画布

我是 HTML5 中画布的新学习者,目前正在尝试为孩子们制作一个简单的画线项目。我将背景图像插入画布中,并尝试提出一种徒手画线的方法,但没有结果。有人可以帮我修复下面的代码吗?之前谢谢大家。

<!DOCTYPE HTML>
<html>
    <script type="text/javascript">
    var canvas, ctx, flag = false,
        prevX = 0,
        currX = 0,
        prevY = 0,
        currY = 0,
        dot_flag = false;

    var x = "black",
        y = 2;

    function init() {
        canvas = document.getElementById('can');
        ctx = canvas.getContext("2d");
        w = canvas.width;
        h = canvas.height;

        canvas.addEventListener("mousemove", function (e) {
            findxy('move', e)
        }, false);
        canvas.addEventListener("mousedown", function (e) {
            findxy('down', e)
        }, false);
        canvas.addEventListener("mouseup", function (e) {
            findxy('up', e)
        }, false);
        canvas.addEventListener("mouseout", function (e) {
            findxy('out', …
Run Code Online (Sandbox Code Playgroud)

html javascript canvas html5-canvas

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

为什么这个正则表达式不能从多行条目中挑选项目?

我有这个字符串.我试图从每个条目拉出接口,nameif和安全级别.

!
interface OUTSIDE
 nameif OUTSIDE
 security-level 0
 ip address 47.237.34.219 255.255.255.248 standby 47.237.34.220 
 authentication key eigrp 20 ***** key-id 20
 authentication mode eigrp 20 md5
!
interface QA
 nameif QA
 security-level 100
 ip address 47.237.34.89 255.255.255.248 standby 47.237.34.90 
 authentication key eigrp 20 ***** key-id 20
 authentication mode eigrp 20 md5
!
interface QASUSEENCEXT
 nameif QASUSEENCEXT
 security-level 93
 ip address 47.77.146.1 255.255.254.0 standby 47.77.146.2 
!
interface QASUSEENCSNSTV
 nameif QASUSEENCSNSTV
 security-level 80
 ip address 47.77.140.1 255.255.254.0 standby 47.77.140.2 

!
interface QAWINSECDB …
Run Code Online (Sandbox Code Playgroud)

java regex

0
推荐指数
1
解决办法
86
查看次数

jvm中本机代码如何转换为机器代码

我读过一些文章说

  1. jvm将字节码转换为机器码
  2. jvm将字节码转换为本机代码
  3. jvm 将字节码转换为系统调用,系统调用又由操作系统与硬件进行通信

上述哪一项是正确的?翻译到底是如何发生的,什么是本机代码?是汇编语言代码吗?

java jvm

0
推荐指数
1
解决办法
1558
查看次数

如何将String转换为byte而不更改?

我需要一个解决方案将String转换为字节数组而不改变如下:

输入:

 String s="Test";
Run Code Online (Sandbox Code Playgroud)

输出:

String s="Test";
byte[] b="Test";
Run Code Online (Sandbox Code Playgroud)

我用的时候

s.getBytes(); 
Run Code Online (Sandbox Code Playgroud)

然后答复是

"[B@428b76b8" 
Run Code Online (Sandbox Code Playgroud)

但我希望得到答复

"Test"
Run Code Online (Sandbox Code Playgroud)

java string android

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