小编Chi*_*led的帖子

有一个不使用实例变量的非静态方法是否有意义?

编译器不允许静态方法调用非静态方法.我理解这样做是因为非静态方法通常最终使用实例变量.

但是有一个不使用实例变量的非静态方法是否有意义.如果我们的行为不影响或不受实例状态的影响,则不应将此类方法标记为静态.

java methods static instance non-static

29
推荐指数
4
解决办法
2246
查看次数

为什么Oracle的JDBC驱动不支持Oracle的Boolean类型

我是 JDBC 的新手并且一直在使用它。论坛中的其他帖子表明 Oracle 的 JDBC 驱动程序不支持 Oracle PLSQL 布尔类型。我觉得这很奇怪:

oracle jdbc 文档来看,它似乎是这样的:

在此处输入图片说明

但是在另一部分中它说它不允许将 BOOLEAN 参数传递给 PL/SQL 存储过程。

文档不是自相矛盾吗?

它不允许我从 PL/SQL 过程/函数传递或接受布尔值。它给了我以下异常:

Exception occured in the database
Exception message: Invalid column type: 16
Database error code: 17004
java.sql.SQLException: Invalid column type: 16
    at oracle.jdbc.driver.OracleStatement.getInternalType(OracleStatement.java:3963)
    at oracle.jdbc.driver.OracleCallableStatement.registerOutParameterInternal(OracleCallableStatement.java:135)
    at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:304)
    at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:393)
    at oracle.jdbc.driver.OracleCallableStatementWrapper.registerOutParameter(OracleCallableStatementWrapper.java:1579)
    at com.HrManager.insertNewEmployee(HrManager.java:1300)
    at com.HrManager.main(HrManager.java:1411)
Run Code Online (Sandbox Code Playgroud)

我试图理解为什么 JDBC Oracle 驱动程序不支持布尔类型。是不是因为 PL/SQL"Boolean"接受空值而 Java 的原始类型"boolean"不接受?

但与之相反的是,Java 的包装类"Boolean"确实接受空值。这可用于映射到 PLSQL 的 Boolean 类型。有人可以对此多加说明。

java oracle boolean exception jdbc

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

java编译器如何知道继承的方法?

我们在Java中使用继承来抽象出超类中的类似行为,并让所有子类继承它.这样做的一个优点是,我们现在只有一个要维护的方法副本(即在超类中).

Class Animal
{
   public void makeNoise()
   {

   }

   public void sleep()
   {

   }   
} 

Class Cat extends Animal
{
     // Override the makeNoise method
     public void makeNoise()
     {

     }
}

Class someClass
{
     public static void main(String args[])
     {
          Cat fluffy = new Cat();

          fluffy.sleep();
     }
}
Run Code Online (Sandbox Code Playgroud)

我试图了解Java编译器如何知道类型引用的sleep()方法Cat.在Cat子类中不能有方法的副本(它违背了在超类中使用它并让所有子类继承它的目的).这些信息是否存储在其他地方?

java compiler-construction inheritance

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

在Java程序中调用PL/SQL包代码

我试图在程序中调用使用PL/SQL包定义的过程Java.

我知道可以connection.prepareCall在Jdbc中调用存储过程.但是关于如何在程序包中调用过程的信息很少.

我正处于开发阶段,我仍在考虑使用什么数据库框架.只是想知道在PLSQL中使用JDBC的优缺点是什么?对于这个用例,有更好的JDBC替代品吗?

java oracle plsql jdbc package

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

在JDBC中,如何知道DDL语句是否成功执行?

我正在尝试使用JDBC在Oracle 11g数据库上执行DDL语句.我正在使用boolean execute(String SQL)Statement课程.

以下是执行查询并尝试确定查询结果的代码段:

// Create a SQL string
String dropSql = "DROP TABLE Reviews";

stmt = conn.createStatement();

// Execute the query
boolean result = stmt.execute(dropSql);

// Get the result of the drop operation
if(result)
{
    // Its a result set
    System.out.println("Atleast one result set has been returned. Loop through them");
}
else
{
    // Its an update count or no result
    Integer updateCnt = stmt.getUpdateCount();

    if(updateCnt == -1)
    {
        // No results
        System.out.println("No results …
Run Code Online (Sandbox Code Playgroud)

java oracle ddl jdbc resultset

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

SOAP Web 服务单元/集成测试

我的第一个 Web 服务版本使用普通JDBC来连接到底层数据库。我已经使用JUnit. 我在Jboss EAP 6.4. 到现在为止还挺好。

我修改了我的应用程序代码以使用 Jboss 的 JDBC 连接池。似乎Jboss 7+不允许从外部(从服务器外部)引用数据源。虽然该服务仍能正常工作,但我的单元测试现已损坏。我想知道如何解决这个问题。

我正在考虑重新编写相同的测试来测试服务而不是应用程序代码。一种方法是使用 wsimport 生成存根,然后编写客户端。然后我可以使用 JUnit 来测试客户端。问题是必须手动创建存根,并且每次 WSDL 更改时

我正在寻找一种有效的方法来实现这一目标。理想的框架是接受一个WSDL(或服务的 url)的 url,然后允许我调用服务操作。

我知道以上不再是单元测试而是集成测试。这种方法是测试JAX-WS服务的最佳方式吗?

java integration-testing unit-testing web-services jax-ws

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

日志类名、方法名和行号的性能影响

我正在我的 java 应用程序中实现日志记录,以便我可以调试应用程序投入生产后可能发生的潜在问题。

考虑到在这种情况下,人们不会奢侈地使用 IDE、开发工具(以调试模式运行事物或逐步执行代码),将类名、方法名和行号与每条消息一起记录将非常有用。

我在网上搜索日志记录的最佳实践,我看到了这篇文章,它说:

您永远不应该包含文件名、类名和行号,尽管这很诱人。我什至看到代码发出的空日志语句:

log.info("");
Run Code Online (Sandbox Code Playgroud)

因为程序员假定行号将是日志模式的一部分,并且他知道“如果文件的第 67 行(在 authentication() 方法中)出现空日志消息,则表示用户已通过身份验证”。此外,日志类名、方法名和/或行号对性能有严重影响。

我试图了解日志记录类名、方法名和行号如何降低性能。

以上是否适用于所有日志框架或仅适用于其中一些?(作者Logback在同一主题中进行了引用)。我有兴趣了解在Log4j.

java performance logging log4j

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

不使用方法的返回值,这是不好的设计?

以下是checkUserGuess属于Board类的示例代码, 方法.

public String checkUserGuess(String aGuess)
{
   // Some processing

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

我有一个SimpleGuessingGame类使用这个方法,并对该方法的处理感到满意.它不使用返回的值.

另一个类ComplexGuessingGame使用此方法,并使用方法返回的值进行进一步处理.

所以我们有两种情况,一种是使用返回值,另一种是忽略它.这是一个常见现象还是指向糟糕的设计?

java methods return-value

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

Java:将两个不同点的字符串拆分为3个部分

第一篇文章.对人好点?

学习Java.

我有一个String对象 "1 Book on wombats at 12.99"

我想将这个字符串拆分成String[]OR或者ArrayList<String>在第一个空格和"at"这个单词周围分割字符串,所以我String[]有3个字符串"1" "Book on wombats" "12.99"

我目前的解决方案是:

// private method call from my constructor method
ArrayList<String> fields = extractFields(item);

  // private method
  private ArrayList<String> extractFields (String item) {
  ArrayList<String> parts = new ArrayList<String>();
  String[] sliceQuanity = item.split(" ", 2);
  parts.add(sliceQuanity[0]);
  String[] slicePrice = sliceQuanity[1].split(" at ");
  parts.add(slicePrice[0]);
  parts.add(slicePrice[1]);
  return parts;
  }
Run Code Online (Sandbox Code Playgroud)

所以这很好用,但肯定有更优雅的方式吗?或许正则表达式,我仍然试图得到一个好的处理.

谢谢!

java regex string split

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

在数组中存储双精度数

好吧,所以我想将值存储在数组中.这是我的代码:

import java.util.Scanner;
public class test {
    public static void main(String args[]){
        Scanner bob = new Scanner(System.in);

        double[] mylist;

        System.out.println("What is your first value?");
        mylist = bob.nextDouble();

        System.out.println("What is your second value?");
        mylist = bob.nextDouble();
    }
}
Run Code Online (Sandbox Code Playgroud)

问题#1:我被告知mylist = bob.nextDouble()应该是nextLine().为什么如果它显然是双倍的?

目标:我想以某种方式将这些值存储到一个数组中,以便我以后可以将它们拉出来.有人可以帮忙吗?

UPDATE

对于问题#1,它告诉我它无法转换Double()Double[].这是什么意思?

java arrays

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