Tag: java

为什么String.valueOf(null)抛出一个NullPointerException?

根据文档,方法String.valueOf(Object obj)返回: 如果参数为null ,那么一个string等于"null" ; 否则,返回obj.toString()的值。 但是,当我尝试这样做时, System.out.println("String.valueOf(null) = " + String.valueOf(null)); 它会抛出NPE呢? (如果你不信,就自己试试!) 线程“main”java.lang.NullPointerException中的exception 在java.lang.String。(Unknown Source) 在java.lang.String.valueOf(未知来源) 这是怎么发生的? 文件是在骗我吗? 这是Java中的一个主要错误吗?

Java中的Class.this和this有什么不同?

有两种方法可以引用该类中的类的实例。 例如: class Person { String name; public void setName(String name) { this.name = name; } public void setName2(String name) { Person.this.name = name; } } 一个使用this.name来引用对象字段,而另一个使用className.this来引用对象字段。 这两个引用有什么区别?

是否有可能使Java中的匿名内部类静态?

在Java中,嵌套类可以是static ,也可以不是。 如果它们是static ,它们不包含对包含实例的指针的引用(它们也不称为内部类,它们被称为嵌套类)。 当不需要引用时,忘记将嵌套类设为static可能导致垃圾回收或转义分析的问题。 是否有可能使一个匿名的内部类static ? 还是编译器自动计算出来(它可以,因为不能有任何子类)? 例如,如果我做一个匿名比较,我几乎不需要参考外部: Collections.sort(list, new Comparator<String>(){ int compare(String a, String b){ return a.toUpperCase().compareTo(b.toUpperCase()); } }

为什么Double.MIN_VALUE不是负面的

谁能澄清一下为什么Double.MIN_VALUE实际上不是Double.MIN_VALUE可以采用的最小值? 这是一个积极的价值,双打当然可以是负面的。 我明白为什么它是一个有用的数字,但它似乎是一个非常不直观的名字,特别是与Integer.MIN_VALUE相比。 调用它Double.SMALLEST_POSITIVE或MIN_INCREMENT或类似的会有更清晰的语义。 另外,Doubles可以使用的最小值是多less? 是-Double.MAX_VALUE ? 文件似乎并没有说。

Java 8stream的.min()和.max():为什么编译?

注:这个问题来自一个死链接,这是一个以前的SO问题,但在这里… 看到这个代码( 注意:我知道这个代码不会“工作”,应该使用Integer::compare – 我只是从链接的问题中提取它 ): final ArrayList <Integer> list = IntStream.rangeClosed(1, 20).boxed().collect(Collectors.toList()); System.out.println(list.stream().max(Integer::max).get()); System.out.println(list.stream().min(Integer::min).get()); 根据.min()和.max()的javadoc,两者的参数应该是Comparator 。 然而这里的方法引用是Integer类的静态方法。 那么,为什么这个编译呢?

Java 2字节中的字符大小不?

我使用RandomAccessFile从文本文件中读取一个byte 。 public static void readFile(RandomAccessFile fr) { byte[] cbuff = new byte[1]; fr.read(cbuff,0,1); System.out.println(new String(cbuff)); } 为什么我看到一个完整的字符被读取?

如何在类之间执行JAVAcallback?

我来自JavaScript,其中callback非常简单。 我试图将它们实现到JAVA,没有成功。 我有一个父类: import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Server { ExecutorService workers = Executors.newFixedThreadPool(10); private ServerConnections serverConnectionHandler; public Server(int _address) { System.out.println("Starting Server…"); serverConnectionHandler = new ServerConnections(_address); serverConnectionHandler.newConnection = function(Socket _socket) { System.out.println("A function of my child class was called."); }; workers.execute(serverConnectionHandler); System.out.println("Do something else…"); } } 然后,我有一个从父级调用的子类: import java.io.IOException; import java.net.ServerSocket; […]

Hibernate联盟的替代品

我必须使用Hibernate来实现联合查询吗? 我知道hibernate目前不支持联合查询,现在我看到联合的唯一方法是使用查看表。 另一个select是使用普通的jdbc,但是这样我就会失去所有的示例/条件查询的好处,以及hibernate针对表/列执行的hibernate映射validation。

jackson和genericstypes的参考

我想使用jacksonjson库的一般方法,如下所示: public MyRequest<T> tester(){ TypeReference<MyWrapper<T>> typeRef = new TypeReference<MyWrapper<T>>(); MyWrapper<T> requestWrapper = (MyWrapper<T>) JsonConverter.fromJson(jsonRequest, typeRef); return requestWrapper.getRequest(); } public class MyWrapper<T> { private MyRequest<T> request; public MyRequest<T> getRequest() { return request; } public void setRequest(MyRequest<T> request) { this.request = request; } } public class MyRequest{ private List<T> myobjects; public void setMyObjects(List<T> ets) { this.myobjects = […]

Java Class.cast()与cast操作符

在我的C ++日子里教过关于C风格演员操作符的邪恶之后,我很高兴地首先发现,在Java 5中, java.lang.Class已经获得了一个cast方法。 我想最后我们有一个OO的方式处理铸造。 原来, Class.cast与C ++中的static_cast 。 这更像reinterpret_cast 。 它不会在预期的地方产生编译错误,而是会延迟到运行时。 这是一个简单的testing用例来演示不同的行为。 package test; import static org.junit.Assert.assertTrue; import org.junit.Test; public class TestCast { static final class Foo { } static class Bar { } static final class BarSubclass extends Bar { } @Test public void test ( ) { final Foo foo = new […]