当前位置: 首页 > news >正文

做企业平台的网站有哪些方面成都正规搜索引擎优化

做企业平台的网站有哪些方面,成都正规搜索引擎优化,对网站建设过程,新手如何做自己的网站✅Java中创建对象的方式有哪些? ✅使用New关键字✅使用反射机制✅使用clone方法✅使用反序列化✅使用方法句柄✅ 使用Unsafe分配内存 ✅使用New关键字 这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的构造函数 (无参的和有…

在这里插入图片描述

✅Java中创建对象的方式有哪些?

  • ✅使用New关键字
  • ✅使用反射机制
  • ✅使用clone方法
  • ✅使用反序列化
  • ✅使用方法句柄
  • ✅ 使用Unsafe分配内存

✅使用New关键字


这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的构造函数 (无参的和有参的) 。


User user = new User();


✅使用反射机制


运用反射手段,调用Java.lang.Class或者Java.lang.reflect.Constructor类的newlnstance()实例方法。

1.使用Class类的newlnstance()方法


可以使用Class类的newlnstance方法创建对象。这个newlnstance方法调用无参的构造函数创建对象。


User user = (User)Class.forlame("xxx.xxx.User").newInstance();
User user = User.class .newInstance();

2.使用Constructor类的newlnstance方法


和Class类的newInstance方法很像,java.lang.reflect.Constructor类里也有一个newinstance()方法可以创建对象。我们可以通过这个newlnstance()方法调用有参数的和私有的构造函数。


Constructor constructor = User.class.getConstructor();
User user = constructor.newInstance();

这两种newInstance()方法就是大家所说的反射。事实上Class的newlnstance()方法内部调用Constructor的newlnstance()方法。


✅使用clone方法


无论何时我们调用一个对象的clone方法,jvm就会创建一个新的对象,将前面对象的内容全部拷贝进去。用clone方法创建对象并不会调用任何构造函数。


要使用clone方法,我们需要先实现Cloneable接口并实现其定义的clone方法。如果只实现了Cloneable接口,并没有重写clone方法的话,会默认使用Obiect类中的clone方法,这是一个native的方法。


public class CloneTest implements Cloneable {private String name;private int age;public String getName() {return name;}public void setName(string name)  {this .name = name;}public int getAge() {return age;}public void setAge(int age) {this .age = age;}public CloneTest(String name, int age) {super();this .name = name ;this .age = age;}public static void main(Stringl] args) {try {CloneTest cloneTest = new CloneTest("wangql",18);CloneTest copyClone = (CloneTest) cloneTest.clone();System.out.println("newclone:"+cloneTest.getName());System.out.println("copyClone:"+copyClone.getName());} catch (CloneNotSupportedException e) {e.printstackTrace();}}
}

✅使用反序列化


当我们序列化和反序列化一个对象,jvm会给我们创建一个单独的对象。其实反序列化也是基于反射实现的。


public static void main(Stringl] args) {//Initializes The ObjectUser1 user = new User1();user.setName("Java");user.setAge(23);System.out.println(user);//Write Obj to FileObjectOutputStream oos = null;try {oos = new ObjectOutputStream(new FileOutputStream("tempFile"));oos.writeObject(user);} catch (IOException e) {e.printStackTrace();} finally {IOUtils.closeQuietly(oos);}//Read Obj from FileFile file = new File("tempFile");ObjectInputStream ois = null;try {ois = new ObjectInputStream(new FileInputStream(file));User1 newUser = (User1) ois.readObject();System.out.println(newUser);} catch (IOException e)  {e.printstackTrace();} catch (ClassNotFoundException e)  {e.printstackTrace();}  finally  {IOUtils.closeQuietly(ois);try {FileUtils.forceDelete(file);} catch (IOException e) {e.printstackTrace();}}
}

✅使用方法句柄


通过使用方法句柄,可以间接地调用构造函数来创建对象


public static void main(String [] args) throws Throwable  {//定义构造函数的方法句柄类型为void类型,无参数MethodType constructorType = MethodType.methodType(void.class);//获取构造函数的方法句柄MethodHandles.Lookup lookup = MethodHandles.lookup();MethodHandle constructorHandle = lookup.findConstructor(User,class, constructorType);// 使用方法句柄调用构造函数创建对象User obj = (User) constructorHandle.invoke();
}

使用了MethodHandles.lookup().findConstructor()方法获取构造函数的方法句柄,然后通过invoke()方法调用构造函数来创建对象。


✅ 使用Unsafe分配内存


在Java中,可以使用sun.misc.Unsate类来进行直接的内存提作,包括内存分配和对象实例化。然而,需要注意的是,sun.misc.Unsafe类是Java的内部API,它并不属于Java标准库的一部分,也不建议直接在生产环境中使用。


public static void main(String[] args) throws Exception {Field field = Unsafe.class.getDeclaredField("theUnsafe");field.setAccessible(true);Unsafe unsafe = field.get(null);//获取User类的字段偏移量long nameOffset = unsafe.objectFieldOffset(User.class.getDeclaredField("name"));long ageOffset = unsafe.objectField0ffset(User.class.getDeclaredField("age"));//使用allocateInstance方法创建对象,不会调用构造函数User user = (User) unsafe.allocateInstance(User.class);// 使用putObject方法设置字段的值unsafe.putObject(user, nameOffset,"Java");unsafe.putInt(user, ageOffset, 30);
}

这种方式有以下几个缺点:


1 . 不可移植性:Unsafe类的行为在不同的Java版本和不同的JVM实现中可能会有差异,因此代码在不同的环境可能会出现不可移植的问题。
2 . 安全性问题:Unsafe类的功能是非常强大和危险的,可以绕过Java的安全机制,可能会导致内存泄漏、非法访问、数据损坏等安全问题。
3 . 不符合面向对象的原则:Java是一门面向对象的语言,鼓励使用构造函数和工厂方法来创建对象,以确保对象的正确初始化和维护对象的不变性。
http://www.hkea.cn/news/515683/

相关文章:

  • 学设计的网站都有哪些seo和sem
  • 如何做网站流量买卖营销型网站的特点
  • 装修设计网站哪个平台最好软文推广多少钱一篇
  • 怎么做微信里的网页网站链接网站设计平台
  • 长宁专业做网站网络营销案例分享
  • 哈尔滨专业建网站哪家好码迷seo
  • 涞水县住房和城乡建设局网站厦门seo专业培训学校
  • 网站建设销售招聘德阳seo
  • 平台网站建设的公司seozou是什么意思
  • wordpress 相册 主题seo整站优化技术培训
  • 做窗帘网站图片百度自动点击器下载
  • 飘雪影视大全免费观看视频快推达seo
  • 做网站的装饰标语seo宣传网站
  • 国外 平面设计 网站百度收录
  • 做网站话术简述搜索引擎的工作原理
  • 现在建设网站赚钱吗seo外链论坛
  • 青海网站建设企业海南百度竞价推广
  • 南京做网站yuanmus电脑突然多了windows优化大师
  • 美国做deals的网站软文营销经典案例优秀软文
  • 招标网站怎么做吴江seo网站优化软件
  • 苏州建设工程协会网站seo去哪里学
  • 上海正规网站制作价格可口可乐软文营销案例
  • 番禺网站 建设信科网络站长之家ping
  • 建筑工程施工承包合同关键词优化报价推荐
  • 网站可以免费看企业网站系统
  • 中华人民共和国建设部网站seo怎么快速提高排名
  • 南宁做网站的有几家东莞网络营销网站建设
  • 苏州知名网站建设开发新区seo整站优化公司
  • 政府建设网站计划书品牌营销策略包括哪些内容
  • 深圳市做网站百度seo排名点击器app