相关疑难解决方法(0)

用于整数的Java ArrayList

我有值,我想添加到ArrayList中以跟踪显示的数字.值是整数,所以我创建了一个ArrayList;

ArrayList<Integer[]> list = new ArrayList<>();
int x = 5
list.add(x);
Run Code Online (Sandbox Code Playgroud)

但我无法使用此方法向ArrayList添加任何内容.如果我使用字符串作为数组列表,它的工作原理.我是否必须使它成为一个String数组,然后以某种方式将数组转换为整数?

编辑:我有另一个问题.我希望列表只能容纳3个值.我该怎么办?

java arrays

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

了解谁提供了servlet-api.jar,它是web容器还是Java EE下载的一部分

我需要了解编译servlet所需的serlvet-api.jar.

我正在构建一个简单的servlet,如下所示:

import javax.servlet.*;
import javax.servlet.http.*;

public class FirstServlet extends HttpServlet {
    // Remaining code here
}
Run Code Online (Sandbox Code Playgroud)

我知道我们需要servlet-api.jar文件来编译这个简单的servlet,如下所示:

javac -classpath /path/where/jar/is/servlet-api.jar
Run Code Online (Sandbox Code Playgroud)

现在我的怀疑从这里开始:

  1. 什么是servlet-api.jar?
  2. 谁提供这个罐子?
  3. 每个web容器都提供这个jar,例如Tomcat,Jboss,glassfish吗?并且每个供应商是否为构建这个简单Servlet所需的jar提供了"相同的名称".
  4. 当我们下载Java EE时,这个jar是下载的一部分吗?或者我们是否将此文件作为Web容器的一部分?
  5. 考虑这种情况:

    假设我们使用Tomcat编译/构建简单的servlet(即构建servlet所需的tomcat版本的jar)并创建.war文件.我们可以在其他供应商的容器中部署战争吗?

java servlets java-ee tomcat7

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

实例化Java抽象类?

相对较新的Java程序员和我已经被教导过你不能创建一个抽象类的实例.我也做了一些研究,我了解到在大多数情况下,当它出现一个抽象类时,它实际上是一个匿名的子类.但这是我遇到的问题:

Java的URL类有一个openConnection返回的方法URLConnection.URLConnection是一个抽象类,Java文档也将其所有子类列为抽象类......所以我真的迷失了.什么回来了?

java urlconnection instantiation abstract

16
推荐指数
5
解决办法
1321
查看次数

如何制作java.util.Properties对象的副本?

我有以下字段和构造函数:

private final Properties properties;

public PropertiesExpander(Properties properties) {
    this.properties = properties;
}
Run Code Online (Sandbox Code Playgroud)

好的做法是在构造函数中复制每个可变集合.我想制作一份浅薄的独立副本.我怎样才能做到这一点?

我的第一个想法是使用putAll()方法:

private final Properties properties = new Properties();

public PropertiesExpander(Properties properties) {
    this.properties.putAll(properties);
}
Run Code Online (Sandbox Code Playgroud)

有没有更简单,更高效或更惯用的方式呢?也许在Guava或Apache Commons中有一些实用工具?

java collections copy properties copy-constructor

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

Java的集合接口和类层次结构是不是很糟糕?

我开始知道在Java中,LinkedList类实现了DequeList接口接口.这对我来说有点混乱.

在计算机科学教学大纲中,我从未被教导过队列可以是一个列表,或者更确切地说,队列可以像列表一样.也就是说,列表可以做的东西,但队列不能.但是列表可以像队列一样运行.例如,Listinterface具有以下方法:

add(E e)
add(int index, E element)
Run Code Online (Sandbox Code Playgroud)

Queue 只有以下内容:

add(E e)
Run Code Online (Sandbox Code Playgroud)

所以很明显Queue不允许在特定索引处插入,这是允许的List.其他操作也是如此,例如Queue.remove()vs. List.remove(int index),List.get(int index)vs Queue.peek()..换句话说,list是一种更通用的数据结构,可以模拟Queue.

现在能够模拟与拥有合同子集不同.也就是说,Queue不允许某些操作(索引)List并允许某些操作仅以特定方式完成(仅插入尾部并仅从头部移除).所以Queue并没有真正对合同进行"补充" List.这正是为什么Queue不在ListJava集合框架中扩展,而是扩展Collection接口.我认为这也是为什么任何一个类都不能实现这两者的原因,因为Queue合同与合同冲突List(这就是为什么它们从Collection接口分开).但是,LinkedList实现两个接口.

我也遇到了这个答案:

LinkedList实施情况,以满足Deque合同,所以为什么不把它实现的接口?

我仍然不明白我们怎么说" LinkedList实施恰好满足Deque合同".队列的概念不允许插入任意索引.因此,Queue界面没有这样的方法. …

java collections

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

子类型多态性和数组

Computer[] labComputers = new Computer[10];
Run Code Online (Sandbox Code Playgroud)

public class Computer {
...
     void toString(){
     // print computer specs
     }
}
public class Notebook extends Computer{
...
     void toString(){
     // print computer specs + laptop color
     }
}
Run Code Online (Sandbox Code Playgroud)

每个下标变量labComputers[i]都可以引用一个Computer对象或一个Notebook对象,因为它Notebook是一个子类Computer.对于方法调用labComputers[i].toString(),多态性可确保调用正确的toString方法.

我想知道如果我们做了什么

Notebook[] labComputers = new Notebook[10];
Run Code Online (Sandbox Code Playgroud)

如果我用Computer对象和Notebook对象引用,我会得到什么样的或错误

java arrays polymorphism

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

Date vs TimeStamp vs calendar?

我有时会对java中不同的Date类型及其实际用法感到困惑.在这里,我想总结一下我的理解

java.sql.Date :- 一个围绕毫秒值的瘦包装器,允许JDBC将其标识为SQL DATE值

java.sql.Timestamp :-java.util.Date的瘦包装器,允许JDBC API将其标识为SQL TIMESTAMP值.它增加了保持SQL TIMESTAMP小数秒值的功能,允许将小数秒的指定精度设置为纳秒

我见过大多数项目更喜欢Timestamp而不是date.我认为这样做的主要原因是Timestamp可以保持值达到纳秒精度,而数据可以保持到毫秒.正确?

Calendar :- 此类专为日期操作而设计,例如: - 用于在特定时刻和一组日历字段(如YEAR,MONTH,DAY_OF_MONTH,HOUR等)之间进行转换,以及用于操作日历字段,例如获取下周的日期.虽然我不知道为什么这个类是抽象的,只有一个实现存在,即GregorianCalendar.

java date

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

在Haskell中编程时如何纠正我的OOP倾向

在Haskell中编程时,我遇到了这个经常出现的问题.在某些时候,我尝试模拟OOP方法.在这里,我为我发现的flash游戏编写了一些AI,我想将各个部分和级别描述为一个部分列表.

module Main where

type Dimension = (Int, Int)
type Position = (Int, Int)
data Orientation = OrienLeft | OrienRight

data Pipe = Vertical | Horizontal | UpLeft | UpRight | DownLeft | DownRight
data Tank = Tank Dimension Orientation
data Bowl = Bowl Dimension
data Cross = Cross
data Source = Source Dimension

-- desired
-- data Piece = Pipe | Tank | Bowl | Cross | Source

-- So that I can put them in a list, and …
Run Code Online (Sandbox Code Playgroud)

oop haskell functional-programming

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

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

带有重载的Java函数调用

我想知道为什么第三个输出不是b.

这是我的代码:

public class SimpleTests {
    public void func(A a) {
        System.out.println("Hi A");
    }
    public void func(B b) {
        System.out.println("Hi B");
    }
    public static void main(String[] args) {
        A a = new A();
        B b = new B();
        A c = new B();
        SimpleTests i = new SimpleTests();
        i.func(a);
        i.func(b);
        i.func(c);
    }
}
class A {}
class B extends A {}
Run Code Online (Sandbox Code Playgroud)

这是输出:

Hi A
Hi B
Hi A
Run Code Online (Sandbox Code Playgroud)

有人能告诉我为什么第三个输出是Hi A,不是Hi B.因为真实的c是B的一个实例.

java overloading

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