Tag: 包装器

为什么原始类型会先调用而不是包装类?

public class A { public void test(Integer i) { System.out.println(“In Wrapper Method”); } public void test(int i) { System.out.println(“In primitive Method”); } public static void main(String args[]) { A a = new A(); a.test(5); } } 当我从main调用test方法并传递整数参数时,它将调用接受原始类型作为参数的方法。 我只是想知道为什么它调用原始类型方法而不是接受包装类作为参数的方法? 是否有任何规则,java遵循调用方法? 谢谢,

从url中检索信息

我想制作一个程序,将一些信息检索到一个url。 例如,我从下面给出了url 如何检索“TAGS”选项卡下方的所有单词,如 Black Library幻想Thanquol&Boneripper Thanquol和Bone Ripper Warhammer? 我正在考虑使用java,并设计一个数据挖掘包装器,但我不知道如何启动。 有人能给我一些建议吗? 编辑:你给了我很好的帮助,但我想问别的。 对于每个标签,当我们按下“数字”按钮时,我们可以看到每个标签的使用次数。 我该如何检索该号码呢?

Java – 模板中Byte,Integer,Long等的原始对应部分

背景 : 我正在尝试实现一个小模板,即generics类,这将允许我实现如下的传递引用function。 public static class Ref { T value; public Ref(T InitValue) { this.set(InitValue); } public void set(T Value) { this.value = Value; } public T get() { return this.value; } } 所以,我可以定义一个函数,它接受一个’Ref’,其值可以实际改变,例如 public static void function(Ref x) { x.set((byte)0x7E); } 要通过引用传递的变量的初始化看起来不那么优雅。 Ref to_be_changed = new Ref((byte)0); … function(to_be_changed); … Byte result = to_be_changed.get() […]

java中的整数文字

Integer i1 = 127; Integer i2 = 127; if(i1==i2){ System.out.println(“true”); //prints true }else{ System.out.println(“false”); } Integer i3 = 128; Integer i4 = 128; if(i3==i4){ System.out.println(“true”); }else{ System.out.println(“false”); //prints false } 为什么如果Integer值小于127,则返回true,否则返回false。如果是原始值,则返回true。 或者如果我创建Integer i2 = new Integer(1); 这总是返回false。

Java不可变对象

我正在学习不变性的概念。 我知道一旦创建了对象,不可变对象就无法更改它们的值。 但我不明白以下对不可变对象的使用。 他们是 是自动线程安全的,没有同步问题。 How ? Proof ? 不需要复制构造函数。 How ? Any example ? 不需要克隆的实现How ? Any example ? How ? Any example ? 用作场时不需要防守复制How ? Any example ? How ? Any example ? 总是有”failure atomicity” (a term used by Joshua Bloch) :如果一个不可变对象抛出exception,它就永远不会处于不受欢迎或不确定的状态。 How ? Any example ? 有人可以通过支持它的例子详细解释这些要点吗? 谢谢。

如何在SocketChannel关闭时收到通知?

我想在SocketChannel调用close方法时收到通知。 我的第一个想法是创建一个包装器,它在调用implCloseSelectableChannel方法时通知监听器(因为close方法本身在AbstractInterruptibleChannel声明为final )。 这个解决方案有效,但是当我尝试用Selector注册它时,由于Selector中的以下检查,我会得到一个IllegalSelectorException : /* */ protected final SelectionKey register(AbstractSelectableChannel paramAbstractSelectableChannel, int paramInt, Object paramObject) /* */ { /* 128 */ if (!(paramAbstractSelectableChannel instanceof SelChImpl)) /* 129 */ throw new IllegalSelectorException(); 现在我无法覆盖register方法来委托包装的SocketChannel因为它在AbstractSelectableChannel声明为final ,我无法实现SelChImpl因为它在sun.nio.ch包中具有默认可见性。 我可以看到从这里开始的唯一方法是制作我自己的SelectorProvider和Selector ,但这似乎有点过于简单。 是否有更简单的方法在SocketChannel关闭时收到通知或我是否需要重新考虑我的程序设计? SocketChannelWrapper示例: import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketAddress; import java.net.SocketOption; import java.net.UnknownHostException; import java.nio.ByteBuffer; import […]

所有原始包装类都是不可变对象吗?

Java中的所有原始包装类都是不可变对象吗? 字符串是不可变的。 什么是其他不可变对象?

HikariCP Wrapper(线程安全)

我正在学习使用HikariCP(我是java的新手),我发现了一个包装器,但我认为它不是线程安全,单例的实例是线程安全,但不是方法getConnection()。 这个课是这样的: public class HikariCPWrapper{ private static final HikariCPWrapper INSTANCE; private HikariDataSource ds; static { INSTANCE = new HikariCPWrapper(); } private HikariCPWrapper(){ HikariConfig config = new HikariConfig(); //config.set… //… ds = new HikariDataSource(config); } public static HikariCPWrapper getInstance () { return INSTANCE; } public Connection getConnection() throws SQLException { return ds.getConnection(); } } 好吧,我需要向HikariConfig或HikariDataSource发送参数,所以我用这种方式重写它: public […]

为NavigableMap编写同步的线程安全包装器

java.util.Collections目前提供以下实用程序方法,用于为各种集合接口创建synchronized包装器: synchronizedCollection(Collection c) synchronizedList(List list) synchronizedMap(Map m) synchronizedSet(Set s) synchronizedSortedMap(SortedMap m) synchronizedSortedSet(SortedSet s) 类似地,它还有6个unmodifiedXXX重载。 这里明显的遗漏是NavigableMap的实用方法。 它确实extends SortedMap ,但SortedSet extends Set , Set extends Collection ,而Collections则为SortedSet和Set提供了专用的实用方法。 据推测, NavigableMap是一个有用的抽象,或者它首先不存在,但它没有实用的方法。 所以问题是: Collections没有为NavigableMap提供实用程序方法的具体原因是什么? 你会如何为NavigableMap编写自己的synchronized包装器? 浏览OpenJDK版本的Collections.java的源代码似乎表明这只是一个“机械”过程 通常你可以像这样添加synchronized线程安全function吗? 如果是这样一个机械过程,它可以自动化吗? (Eclipse插件等) 这个代码重复是必要的,还是可以通过不同的OOP设计模式来避免?

为什么我的原始类型争论方法不会覆盖包装类型争论的超类方法?

public class WrapperClasses{ void overloadedMethod(Number N){ System.out.println(“Number Class Type”); } void overloadedMethod(Double D){ System.out.println(“Double Wrapper Class Type”); } void overloadedMethod(Long L){ System.out.println(“Long Wrapper Class Type”); } public static void main(String[] args){ int i = 21; WrapperClasses wr = new WrapperClasses(); //wr.overloadedMethod(i); } } class mine extends WrapperClasses{ void overloadedMethod(int N){ System.out.println(“Integer Class Type”); } public […]