smali语言详解之创建对象
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语言详解之创建对象相关推荐
- smali语言详解之方法的调用
smali语言详解之方法的调用 一.方法调用关键字介绍 smali语言方法调用关键字主要有以下五种 invoke-virtual主要用于非私有实例方法的调用.实例方法指不是构造方法.父类方法等的属于这 ...
- smali语言详解之static静态代码块的声明与静态变量初始化赋值位置
smali语言详解之static静态代码块的声明与静态变量初始化赋值位置 一.smali语言的静态代码块声明格式 .method static constructor <clinit>() ...
- smali语言详解之一般/构造方法(函数)的声明与返回值关键字
smali语言详解之一般/构造方法(函数)的声明与返回值关键字 一. smali语言的方法声明格式 .method与.end method成对出现,类似于java中的花括号 1.1.非静态的一般方法 ...
- smali语言详解之字段的声明(变量、常量)
smali语言详解之字段的声明(变量.常量) 一.smali语言的字段声明格式 1.1.非静态变量 .field 权限修饰关键字 变量名:变量类型的全包名路径或与java对应的数据类型关键字 1.2. ...
- smali语言详解之类的声明
smali语言详解之类的声明 一.smali语言的类声明格式 .class 权限修饰关键字 类的全包名路径 二.示例 2.1.一般类(无继承和接口实现) java代码如下 public class T ...
- Drools 规则语言详解(上)
http://www.blogjava.net/guangnian0412/archive/2006/06/09/51574.html http://www.blogjava.net/guangnia ...
- 克鲁斯卡尔算法c语言,Kruskal算法(一)之 C语言详解
最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树. 例如,对于如上图G4所示的连通网可以有多棵权值总和 ...
- c++指针详解_c语言详解sizeof
一.sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++.--等. 它并不是函数. sizeof操作符以字节形式给出了其操作数的存储大小. 操作数可以是一个表达式或括在括 ...
- 排座系统c语言,2008noip排座位C语言详解.doc
2008noip排座位C语言详解 2008noip排座位C语言详解 2.排座椅 (seat.pas/c/cpp)D对同学上课时会交头接耳.同学们在教室中坐成了M行N列,坐在第i行第j列 的同学的位置是 ...
最新文章
- 20151130语法基础
- 多线程编程:return、pthread_exit()、exit()函数区别
- 满纸荒唐言,一把辛酸泪--红楼一梦
- 关于apache kylin 安装32位linux办法
- matlab+nnf.m,中南大学-信号与系统matlab实验报告.doc
- java接口有非抽象方法_如果一个类没有实现Java接口的所有抽象方法,会发生什么?...
- 死锁Waiting--DeadLockDemo
- OpenCV防止数据溢出saturate_cast
- 电脑重启 硬件问题引发的人品问题
- VC++动态链接库(DLL)编程深入浅出:QA(原创)
- Java aop中参数传递
- matlab导线网平差,导线网平差算例教程
- 【转】单循环赛赛程安排算法研究
- 非平稳时间序列及建模
- 在线word预览方案
- 台电 8G U盘通过量产程序实现USB-CDROM启动
- Account locked due to 10 failed logins
- 如何激活微信里沉睡的客户?
- VUE3模板,JSX,JSV
- 麒麟985和麒麟990有什么区别(手机常见问题)