在Java中的generics擦除的概念是什么?
我有一个名单是这样宣布的: List<? extends Number> foo3 = new ArrayList<Integer>(); 我试着给foo3加3。 不过,我得到这样的错误消息: The method add(capture#1-of ? extends Number) in the type List<capture#1-of ? extends Number> is not applicable for the arguments (ExtendsNumber)
我试图开发一个系统,在不同的系统上运行不同的节点,或者在同一个系统的不同端口上运行不同的节点。 现在所有节点都创build一个带有目标IP的Socket作为称为引导节点的特殊节点的IP。 节点然后创build自己的ServerSocket并开始监听连接。 引导节点维护一个节点列表,并在被查询时返回它们。 现在我需要的是节点必须注册自己的IP到引导节点。 我尝试使用cli.getInetAddress()一旦客户端连接到引导节点的ServerSocket ,但没有工作。 我需要客户端注册其PPP IP,如果可用的话; 否则LAN IP如果可用的话; 否则,假设它是同一台计算机,它必须注册127.0.0.1。 使用代码: System.out.println(Inet4Address.getLocalHost().getHostAddress()); 要么 System.out.println(InetAddress.getLocalHost().getHostAddress()); 我的PPP连接IP地址是:117.204.44.192,但上面的返回给我192.168.1.2 编辑 我正在使用下面的代码: Enumeration e = NetworkInterface.getNetworkInterfaces(); while(e.hasMoreElements()) { NetworkInterface n = (NetworkInterface) e.nextElement(); Enumeration ee = n.getInetAddresses(); while (ee.hasMoreElements()) { InetAddress i = (InetAddress) ee.nextElement(); System.out.println(i.getHostAddress()); } } 我能够获得所有与所有NetworkInterface相关的IP地址,但是我怎么区分它们? 这是我得到的输出: 127.0.0.1 192.168.1.2 192.168.56.1 117.204.44.19
这可能是有史以来最愚蠢的问题,但我认为这是一个新手完全混淆。 有人可以澄清什么是不可改变的意思吗? 为什么一个String不可变? 不可变对象有什么优点/缺点? 为什么像StringBuilder这样的可变对象比String和副诗更受欢迎呢? 一个很好的例子(在Java中)将非常感激。
我必须保留内存中的数千个string以Java方式串行访问。 我应该将它们存储在一个数组中,还是应该使用某种List? 由于数组将所有的数据保存在连续的内存块中(与列表不同),使用数组来存储数以千计的string会产生问题吗? 答:共识是性能差异较小。 List接口提供了更多的灵活性
据我所知,从Java文件中读取基于字符的数据的两种最常见的方法是使用Scanner或BufferedReader 。 我也知道BufferedReader通过使用缓冲区来有效地读取文件,以避免物理磁盘操作。 我的问题是: Scanner性能和BufferedReader吗? 为什么要select通过BufferedReader Scanner ,反之亦然?
我想在指定的延迟之后能够调用下面的方法。 在目标c中有这样的东西: [self performSelector:@selector(DoSomething) withObject:nil afterDelay:5]; 有没有在Java与Android的这种方法的等价物? 例如,我需要能够在5秒后调用一个方法。 public void DoSomething() { //do something here }
“java -server”和“java -client”之间有没有实际的区别? 我只能在Sun的网站上find一个模糊的“服务器启动较慢但运行速度更快”。 真正的区别是什么? (目前使用JDK 1.6.0_07)
jackson的数据绑定文档表明,jackson支持反序列化“所有支持types的数组”,但我无法弄清楚这个确切的语法。 对于单个对象,我会这样做: //json input { "id" : "junk", "stuff" : "things" } //Java MyClass instance = objectMapper.readValue(json, MyClass.class); 现在对于一个数组我想这样做: //json input [{ "id" : "junk", "stuff" : "things" }, { "id" : "spam", "stuff" : "eggs" }] //Java List<MyClass> entries = ? 任何人都知道是否有一个神奇的失踪命令? 如果不是,那么解决scheme是什么?
我明白,我认为,“Bean”是一个具有属性和getter / setter的Java类。 据我所知,它是相当于一个C结构。 真的吗? 另外,bean和普通类之间是否存在真正的语法差异? 有没有特别的定义或界面? 基本上,为什么会有这个词? 编辑 :如果你可以如此善良,并添加有关Serializable接口的信息,以及它的意思,对你的答案,我会非常感激。