小编dus*_*kin的帖子

Java线程join()混淆

我试图按照这个例子来理解join()方法:

class PrintDemo {

   public void printCount() {

      try {

         for(int i = 5; i > 0; i--) {
            System.out.println("Counter   ---   "  + i );
         }
      } catch (Exception e) {
         System.out.println("Thread  interrupted.");
      }
   }
}

class ThreadDemo extends Thread {
   private Thread t;
   private String threadName;
   PrintDemo  PD;

   ThreadDemo(String name,  PrintDemo pd) {
      threadName = name;
      PD = pd;
   }

   public void run() {

      synchronized(PD) {
         PD.printCount();
      }
      System.out.println("Thread " +  threadName + " exiting.");
   }

   public void start …
Run Code Online (Sandbox Code Playgroud)

java multithreading

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

实现接口并具有公共属性的最佳实践(如果全部)是什么?

我实际上要问的是,如果我希望所有实现都具有公共(但不是静态!)属性,是否有比使用抽象类更好的方法。

例如:

public interface MyInterface{

   public int someProperty = 0;

   public void doSomething();

}

public ClassA implements MyInterface{

   @Override 
   public void doSomething(){...}
}

public ClassB implements MyInterface{

   @Override 
   public void doSomething(){...}
}
Run Code Online (Sandbox Code Playgroud)

有没有办法创建这两个实现的实例并初始化接口的 someProperty 成员?

或者我必须使用抽象类而不是接口来为每个实现实例初始化这个成员?

java

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

Selenium ChromeDriver:增加获取WebElement Text的时间

我有一个代码,我遍历表行和列,我想将它的值添加到列表中.

这花了我很多时间.

所以我添加了时间测量,我注意到由于某种原因,时间从一行到另一行增加.

我不明白为什么.

你能告诉我吗?

private void buildTableDataMap() {

    WebElement table = chromeWebDriver.findElement(By.id("table-type-1"));

    List<WebElement> rows = table.findElements(By.tagName("tr"));

    theMap.getInstance().clear();

    String item;
    for (WebElement row : rows) {

        ArrayList<String> values = new ArrayList<>(); 

        List<WebElement> tds = row.findElements(By.tagName("td"));

        if(tds.size() > 0){

            WebElement last = tds.get(tds.size() - 1);

            long time = System.currentTimeMillis();

            values.addAll(tds.stream().map(e->e.getText()).collect(Collectors.toList()));

            System.out.println(System.currentTimeMillis() - time);

            //remove redundant last entry:
            values.remove(tds.size() - 1);
            callSomeFunc(values, last);

            item = tds.get(TABLE_COLUMNS.NAME_COL.getNumVal()).getText();
            item = item.replaceAll("[^.\\- /'&A-Za-z0-9]", "").trim();//remove redundant chars

            theMap.getInstance().getMap().put(item, values);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

伙计们,我继续研究.首先,Florent的回答对我没有帮助,因为据我所知,它至少给了我一个字符串列表,我不得不解析,我不太喜欢这种解决方案......

所以我找到了e.getText()调用从呼叫到呼叫时间增加的问题!我也尝试了 …

java selenium selenium-chromedriver selenium-webdriver

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

JUnit AssertEquals失败

我有一个代码,用于以下

import static org.junit.Assert.assertEquals;

System.out.println("obj1 name = " + obj1.getName());
System.out.println("obj1 value = " + (obj1.getvalue() == null ? "null" : "not null"));
System.out.println("obj2 name = " + obj2.getName());
System.out.println("obj2 value = " + (obj2.getvalue() == null ? "null" : "not null"));

assertEquals(obj2, obj1);
Run Code Online (Sandbox Code Playgroud)

产量

obj1 name = DC2
obj1 value = null
obj2 name = DC2
obj2 value = null

java.lang.AssertionError: 
Expected :com.gms.contract.myClass.inventory.MyClass@795ce9b5
Actual   :com.gms.contract.myClass.inventory.MyClass@280cb0b4
Run Code Online (Sandbox Code Playgroud)

是不是assertEquals假设按值进行比较?它在我看来它比较对象地址.但也许我错了?...

谢谢!

java junit junit4

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

可以优化动态对象创建的代码吗?

我有一个接受类参数的方法。我需要为任何类型的类创建此类对象的列表。每个类可能有一个带有不同数量参数的构造函数。

这就是我到目前为止所取得的成果。它有效,但显然它不够通用。这段代码有更通用的代码吗?

public List<Object> convertSeparatedListToJsonList(String pipedStr, String separatorRegex, Class c){

        try {

                Class<?> cCtor = Class.forName(c.getTypeName());

                List<String> valuesList = Stream.of(pipedStr.split(separatorRegex)).map(String::trim).collect(Collectors.toList());
                int valuesNumber = valuesList.size();

                switch (valuesNumber) {
                    case 1 -> {
                        Constructor<?> ctor = cCtor.getConstructor(String.class);
                        return List.of(ctor.newInstance(valuesList.get(0)));
                    }
                    case 2 -> {
                        Constructor<?> ctor = cCtor.getConstructor(String.class, String.class);
                        return List.of(ctor.newInstance(valuesList.get(0), valuesList.get(1)));
                    }
                    case 4 -> {
                        Constructor<?> ctor = cCtor.getConstructor(String.class, String.class, String.class, String.class);
                        return List.of(ctor.newInstance(valuesList.get(0), valuesList.get(1), valuesList.get(2), valuesList.get(3)));
                    }
                    case 5 -> {
                        Constructor<?> ctor = cCtor.getConstructor(String.class, String.class, String.class, String.class, String.class); …
Run Code Online (Sandbox Code Playgroud)

java

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

Cypress:如何读取文本文件,但即使文件不存在也继续执行?

我想写入一个文本文件,但如果它已经存在,我想先清理它。

如果它不存在,我想创建它并开始写入它。

我多次尝试清除文件(如果文件存在),但如果不存在则继续执行,但是该方法

cy.readFile() 
Run Code Online (Sandbox Code Playgroud)

如果找不到文件,我的执行总是会崩溃。

例如:

function clearFile(filePath) {
  try {
    // Read the contents of the file.
    const fileContents = cy.readFile(filePath, { encoding: "utf-8" });
  
    // If the file exists, clear it.
    if (fileContents) {
      cy.writeFile(filePath, "");
    }
  } catch (err) {
    // Ignore the error if the file does not exist.
    if (err.code === "ENOENT") {
      // The file does not exist.
    } else {
      // Rethrow the error if it is not a file not found error. …
Run Code Online (Sandbox Code Playgroud)

javascript typescript cypress

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