前几天与同事进行了交谈。
使用构造函数是显而易见的,但是还有其他方法吗?
有四种在Java中创建对象的方法:
一 。使用new
关键字
这是在Java中创建对象的最常见方法。几乎99%的对象都是通过这种方式创建的。
MyObject object = new MyObject();
乙 。使用Class.forName()
如果我们知道类的名称,并且它具有公共的默认构造函数,则可以通过这种方式创建一个对象。
MyObject object = (MyObject) Class.forName("subin.rnd.MyObject").newInstance();
Ç 。使用clone()
clone()可用于创建现有对象的副本。
MyObject anotherObject = new MyObject();
MyObject object = (MyObject) anotherObject.clone();
d 。使用object deserialization
对象反序列化只是从序列化的形式创建对象。
ObjectInputStream inStream = new ObjectInputStream(anInputStream );
MyObject object = (MyObject) inStream.readObject();
您可以从这里阅读它们。
问题内容: 您是否知道在不关闭关联套接字的情况下中断Java读取的方法? 这是获取套接字输入流并转换为可中断的DataInputStream的当前构造策略: 这利用提供了对throwable的支持的方法的a 。 问题在于,在线程上调用中断再在原因上调用会导致底层套接字被关闭。 就我而言,我需要使套接字保持打开状态。该呼叫正在等待即将到来的用户输入,因此我正在使用中断将控制权传递回更高的组件,然后最
我知道字符串文字和新字符串对象之间的区别,也知道它在内部是如何工作的。但我的问题是,这有点超前。当我们使用new关键字as创建字符串对象时 在本例中,我们传递的是字符串类型的参数。我的问题是这个字符串是在哪里生成的-堆还是字符串常量池还是其他地方? 据我所知,这个参数是一个字符串文字,所以它应该在字符串常量池中。如果是这样的话,那么intern方法的用途是什么?只需将变量str链接到常量池?因为“
问题内容: 因此,对于Toast类,显然可以这样编写: 为什么完全可以实例化toastMessage并将其用作没有new关键字的对象? 如何通过方法实例化toastMessage? 问题答案: 这里没有什么特别的。您只是在调用创建实例的静态方法(或者可以重用现有实例- 这是实现细节)。例如,这是您会在各处看到的一种模式。有时可以改为调用构造函数,有时 只能 通过静态方法创建实例。 除非幕后功夫,否
执行以下代码时,会出现异常。 类中的main()方法: 下面是课程: 但是当我在公共的最终颜色BLUE=new Color();中把静态放在最终后面时,程序会正确运行,而不会抛出StackOverflow Error。为什么它不抛出异常?是不是当JVM识别出某个对象引用自己时,它应该停止?Java如何处理这个问题?
问题内容: 我正在网上关注Java教程,尝试学习该语言,并且它在使用数组的两种语义之间反弹。 和: 该教程从未真正提到过为什么它会在两者之间来回切换,所以我对该主题进行了一些搜索。我目前的理解是,操作员正在创建“ longs数组”类型的对象。我 不 明白的是为什么我要那个,那有什么后果? 是否存在某些特定于“数组”的方法,除非它是“数组对象”,否则这些方法对数组不起作用? 有什么我 不能 用普通数