smali语言详解之创建对象


一、smali语言创建对象分两步进行

  • 第一步,声明对象实例,格式如下
new-instance 变量名,该对象对应类的全包名路径
  • 第二步,调用构造方法(如果构造方法内还定义了成员变量,那么在调用构造方法之前需要提前声明对应的变量,并在invoke调用构造方法的时候当做参数一并传入),格式如下
invoke-direct {变量名1,变量名2},类的全包名路径-><init>(参数)返回值类型

二、smali创建对象示例

java中创建对象直接使用new关键字即可创建
java完整代码如下

package com.ylw.helloworld;public class Test {Test test = new Test();}

对应的smali完整代码如下

.class public Lcom/ylw/helloworld/Test;
.super Ljava/lang/Object;
.source "Test.java"# instance fields
.field test:Lcom/ylw/helloworld/Test;# direct methods
.method public constructor <init>()V.registers 2.prologue.line 3invoke-direct {p0}, Ljava/lang/Object;-><init>()V.line 5new-instance v0, Lcom/ylw/helloworld/Test;invoke-direct {v0}, Lcom/ylw/helloworld/Test;-><init>()Viput-object v0, p0, Lcom/ylw/helloworld/Test;->test:Lcom/ylw/helloworld/Test;return-void
.end method

其中与java中new一个对象相对应的代码为(即第一部分smali语言创建对象的两步)

    new-instance v0, Lcom/ylw/helloworld/Test;#声明一个变量v0,用于存放Test对象invoke-direct {v0}, Lcom/ylw/helloworld/Test;-><init>()V#将v0传入Test类的构造方法进行初始化

smali语言详解之创建对象相关推荐

  1. smali语言详解之方法的调用

    smali语言详解之方法的调用 一.方法调用关键字介绍 smali语言方法调用关键字主要有以下五种 invoke-virtual主要用于非私有实例方法的调用.实例方法指不是构造方法.父类方法等的属于这 ...

  2. smali语言详解之static静态代码块的声明与静态变量初始化赋值位置

    smali语言详解之static静态代码块的声明与静态变量初始化赋值位置 一.smali语言的静态代码块声明格式 .method static constructor <clinit>() ...

  3. smali语言详解之一般/构造方法(函数)的声明与返回值关键字

    smali语言详解之一般/构造方法(函数)的声明与返回值关键字 一. smali语言的方法声明格式 .method与.end method成对出现,类似于java中的花括号 1.1.非静态的一般方法 ...

  4. smali语言详解之字段的声明(变量、常量)

    smali语言详解之字段的声明(变量.常量) 一.smali语言的字段声明格式 1.1.非静态变量 .field 权限修饰关键字 变量名:变量类型的全包名路径或与java对应的数据类型关键字 1.2. ...

  5. smali语言详解之类的声明

    smali语言详解之类的声明 一.smali语言的类声明格式 .class 权限修饰关键字 类的全包名路径 二.示例 2.1.一般类(无继承和接口实现) java代码如下 public class T ...

  6. Drools 规则语言详解(上)

    http://www.blogjava.net/guangnian0412/archive/2006/06/09/51574.html http://www.blogjava.net/guangnia ...

  7. 克鲁斯卡尔算法c语言,Kruskal算法(一)之 C语言详解

    最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树. 例如,对于如上图G4所示的连通网可以有多棵权值总和 ...

  8. c++指针详解_c语言详解sizeof

    一.sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++.--等. 它并不是函数. sizeof操作符以字节形式给出了其操作数的存储大小. 操作数可以是一个表达式或括在括 ...

  9. 排座系统c语言,2008noip排座位C语言详解.doc

    2008noip排座位C语言详解 2008noip排座位C语言详解 2.排座椅 (seat.pas/c/cpp)D对同学上课时会交头接耳.同学们在教室中坐成了M行N列,坐在第i行第j列 的同学的位置是 ...

最新文章

  1. 20151130语法基础
  2. 多线程编程:return、pthread_exit()、exit()函数区别
  3. 满纸荒唐言,一把辛酸泪--红楼一梦
  4. 关于apache kylin 安装32位linux办法
  5. matlab+nnf.m,中南大学-信号与系统matlab实验报告.doc
  6. java接口有非抽象方法_如果一个类没有实现Java接口的所有抽象方法,会发生什么?...
  7. 死锁Waiting--DeadLockDemo
  8. OpenCV防止数据溢出saturate_cast
  9. 电脑重启 硬件问题引发的人品问题
  10. VC++动态链接库(DLL)编程深入浅出:QA(原创)
  11. Java aop中参数传递
  12. matlab导线网平差,导线网平差算例教程
  13. 【转】单循环赛赛程安排算法研究
  14. 非平稳时间序列及建模
  15. 在线word预览方案
  16. 台电 8G U盘通过量产程序实现USB-CDROM启动
  17. Account locked due to 10 failed logins
  18. 如何激活微信里沉睡的客户?
  19. VUE3模板,JSX,JSV
  20. 麒麟985和麒麟990有什么区别(手机常见问题)

热门文章

  1. 什么样的经历,才能领悟成为架构师?
  2. html,图片下面附加文字说明
  3. 网易游戏探索人脸识别技术,未成年游戏防沉迷监管日趋完善
  4. AVFoundation开发秘籍笔记:第9章 媒体的組合和編緝
  5. DevExpress 16.2安装破解
  6. 阶跃响应指标的matlab计算
  7. linux系统怎么做备份吗,备份Linux操作系统的几种方法
  8. 相对位姿误差(RPE)和绝对轨迹误差(ATE)
  9. 简述计算机语言的发展史
  10. 移动互联技术与实践-实验一