找到 4330 篇文章 关于 Java 8

如何防止序列化破坏单例类模式?

Arjun Thakur
更新于 2020-06-23 14:38:06

562 次浏览

单例模式规定一个类只能有一个实例,不允许创建多个实例。为此,我们将类的构造函数设为私有,并通过静态方法返回一个实例。但是,使用序列化,我们仍然可以创建类的多个实例。请参见下面的示例 - 示例 - 破坏单例 实时演示import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class Tester{    public static void main(String[] args)    throws ClassNotFoundException, IOException{       A a = A.getInstance();       A b ... 阅读更多

如何防止反射破坏单例类模式?

Chandu yadav
更新于 2020-06-23 14:43:37

747 次浏览

单例模式规定一个类只能有一个实例,不允许创建多个实例。为此,我们将类的构造函数设为私有,并通过静态方法返回一个实例。但是,使用反射,我们仍然可以通过修改构造函数的作用域来创建类的多个实例。请参见下面的示例 - 示例 - 破坏单例 实时演示import java.io.Serializable; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; public class Tester {    public static void main(String[] args) throws    InstantiationException, IllegalAccessException,    IllegalArgumentException, InvocationTargetException{       A a = A.getInstance();     ... 阅读更多

如何防止克隆破坏单例类模式?

George John
更新于 2020-06-23 14:27:50

1K+ 次浏览

单例模式规定一个类只能有一个实例,不允许创建多个实例。为此,我们将类的构造函数设为私有,并通过静态方法返回一个实例。但是,使用克隆,我们仍然可以创建类的多个实例。请参见下面的示例 - 示例 - 破坏单例public class Tester{    public static void main(String[] args)    throws CloneNotSupportedException {       A a = A.getInstance();       A b = (A)a.clone();       System.out.println(a.hashCode());       System.out.println(b.hashCode());    } } ... 阅读更多

如何在 Java 中防止类的对象被垃圾回收?

Ankith Reddy
更新于 2020-06-23 14:30:45

228 次浏览

如果一个对象不再被活动引用引用,那么它就有资格被垃圾回收。请参见下面的示例 - 示例public class Tester{    public static void main(String[] args) {       test();    }    public static void test(){       A a = new A();    } } class A {}当 test() 方法执行完毕后,a 对象不再被引用,并且有资格被垃圾回收。Java 垃圾回收器将在其运行时释放该对象。要防止垃圾回收,我们可以创建一个对象的静态引用,然后 ... 阅读更多

如何在 Java 中解析 JSON?

Arushi
更新于 2020-06-22 11:30:03

3K+ 次浏览

本文介绍了如何使用 Java 编程语言对 JSON 对象进行编码和解码。让我们从准备环境开始,开始使用 Java 进行 JSON 编程。环境在使用 Java 对 JSON 进行编码和解码之前,您需要安装任何可用的 JSON 模块。在本教程中,我们下载并安装了 JSON.simple,并将 json-simple-1.1.1.jar 文件的位置添加到环境变量 CLASSPATH 中。JSON 和 Java 实体之间的映射JSON.simple 在解码或解析时将左侧实体映射到右侧,在编码时将右侧实体映射到左侧。JSONJava字符串java.lang.String数字java.lang.Number真|假java.lang.Boolean空null数组java.util.List对象java.util.Map在解码时, ... 阅读更多

如何在 Java 中测量函数执行时间?

Arushi
更新于 2020-06-22 11:30:52

304 次浏览

java.lang.System.currentTimeMillis() 方法可用于计算 Java 中函数的执行时间。技巧很简单。使用 currentTimeMillis() 获取开始时间和结束时间,其中开始时间是调用方法的时间,结束时间是方法执行完毕的时间。请参见下面的示例 - 示例 实时演示public class Tester{    public static void main(String[] args) {       long startTime = System.currentTimeMillis();       longRunningMethod();       long endTime = System.currentTimeMillis();       System.out.println("Time taken: " + (endTime -startTime) + " ms");    }    private static void longRunningMethod() {       try {          Thread.sleep(1000);       } catch (InterruptedException e) {          e.printStackTrace();       }    } }输出Time taken: 1000 ms

如何在 Java 中比较两个数组?

Paul Richard
更新于 2020-06-22 11:31:37

13K+ 次浏览

可以使用以下方法在 Java 中比较数组使用 Arrays.equals(array1, array2) 方法 - 此方法遍历数组的每个值,并使用 equals 方法进行比较。使用 Arrays.deepEquals(array1, array2) 方法 - 此方法遍历数组的每个值,并使用任何重写的 equals 方法进行深度比较。对数组使用 == 不会得到期望的结果,它会将它们作为对象进行比较。请参见下面每个比较方法的示例。示例 实时演示import java.util.Arrays; public class Tester{    public static void main(String[] args) {       int[] array1 = {1, 2, 3};       int[] ... 阅读更多

如何在 Java 中使对象有资格进行垃圾回收?

Fendadis John
更新于 2019-07-30 22:30:23

177 次浏览

Java 垃圾回收器跟踪活动对象,并将不再需要的对象标记为垃圾回收。它使开发人员无需考虑内存分配/释放问题。JVM 使用堆进行动态分配。在大多数情况下,操作系统会预先分配堆,然后在程序运行时由 JVM 管理。它以以下方式提供帮助: 由于不再需要操作系统级别的同步,因此对象创建速度更快。对象分配需要一些内存并增加偏移量。当不再需要对象时,垃圾回收器 ... 阅读更多

Java 为什么严格按值传递?

Arushi
更新于 2020-06-22 11:32:45

243 次浏览

值传递是指使用参数的值来调用方法。通过这种方式,参数值会被传递给形参。而引用传递是指使用参数的引用来调用方法。通过这种方式,参数的引用会被传递给形参。在值传递中,对传递的参数所做的修改不会反映在调用者的作用域中,而在引用传递中,对传递的参数所做的修改是持久的,并且更改会反映在调用者的作用域中。但是 Java 仅使用值传递。它创建引用的副本并传递…… 阅读更多

Java 平台是如何实现独立性的?

Paul Richard
更新于 2019-07-30 22:30:23

433 次浏览

当您使用 javac 编译器编译 Java 程序时,它会生成字节码。我们需要使用 JVM(Java 虚拟机)来执行此字节码。然后,JVM 将 Java 字节码转换为机器可理解的代码。您可以下载适合您操作系统的 JVM(随 JDK 或 JRE 提供),并且一旦您编写了一个 Java 程序,您就可以使用 JVM 在任何系统上运行它。

广告