当前位置: 首页 > 面试题库 >

Android中使用Java进行方法混乱

岳英耀
2023-03-14
问题内容

是否可以使用Java在Android中进行方法转换?我想拦截一个系统方法并记录其参数,然后正常处理


问题答案:

我认为在任何环境下都不能使用Java使用该技术。

也许您可以使用AOP获得类似的结果。

但是,您只能在Android上执行此操作。参见android中面向方面的编程。实际上,由于您不会编译目标代码(系统方法),因此在这种情况下,编译时编织(似乎是您可以在Android上使用的所有东西)将毫无用处。正如我想的那样。

另一个想法…我想您希望一直进行此日志记录。但是,如果您需要这样做来调试问题,则可以使用Eclipse中的条件断点来完成。

条件表达式可以包含任意Java代码,并且可以包含多个语句,从而允许断点条件实现诸如跟踪之类的功能。例如,条件可以执行打印语句,然后返回硬编码值以永不挂起(“
System.out.println(…); return false;”)。

我具体不知道这是否适用于Android SDK中的方法。但是它可以与Java SDK中的方法一起使用。例如,下面是简单的代码:

    System.err.println("foo");

我在PrintStream.print中创建了一个条件断点,如下所示:

System.err.println("hello: " + arg0);
return false;

程序中调试时的控制台输出是这样的:

hello: foo
foo

请注意,由于JDK并未使用调试符号进行编译,因此我无法按名称引用方法参数,而是使用arg0..argn



 类似资料:
  • 问题内容: 假设我有一个void方法,该方法只对对象进行转换而没有返回任何值,并且我想在流map()函数的上下文中使用它,如下所示: 该示例是为了简单起见而构成的-实际方法除了在处理对象的UUID之外,还在做其他事情。 无论如何,在上述情况下如何使用void方法?当然,我可以使该方法返回转换后的对象,但这不重要,并且违反了设计(该方法应为空)。 问题答案: 似乎是强制使用Java 8流的情况。相反

  • 假设我有一个对对象进行转换而不返回任何值的空方法,我想在stream map()函数的上下文中使用它,如下所示: 这个例子是为了简单起见——实际的方法不仅仅是搞乱对象的UUID。 不管怎样,在上面这样的场景中如何使用空方法?当然,我可以让该方法返回转换后的对象,但这不是重点,并且违反了设计(该方法应该是空的)。

  • 本文向大家介绍Android中使用TextView实现图文混排的方法,包括了Android中使用TextView实现图文混排的方法的使用技巧和注意事项,需要的朋友参考一下 向TextView或EditText中添加图像比直接添加文本复杂一点点,需要用到<img>标签。 <img>只有一个src属性,该属性原则上应该指向一个图像地址或可以找到某个图像资源的唯一标识。但要注意的是,系统并不会直接根据s

  • 本文向大家介绍java中使用数组进行模拟加密的方法,包括了java中使用数组进行模拟加密的方法的使用技巧和注意事项,需要的朋友参考一下 现假设某个公司采用公用电话来传递数据,数据是四位的整数,在传递过程中是加密的。 加密规则是每位数字都加上5,然后再用除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。 编写一个程序,用于接收一个四位的整数,并且打印输出加密后的数。 这道题原本没

  • 我知道System类的System.In是InputStream的一个具体子类的实例,因为InputStream的read()方法是抽象的,System.In必须重写这个方法。根据关于InputStream的read()方法的文档: 从输入流中读取下一个字节的数据。值字节以0到255范围内的int形式返回。如果由于已到达流的结尾而没有可用的字节,则返回值-1。此方法将阻塞,直到输入数据可用、检测到

  • 问题内容: 我偶然发现了这段代码。 我试图在实际运行之前猜测运行它的结果。看到他们时,我真的很困惑,需要一些解释。 这是代码: 输出为: 这是为什么? 怎么样 为什么会出现?我还没有实例化。 如果出现,为什么 之后 呢? 问题答案: 在我开始解释代码执行的每一步之前,您应该了解一些事实: 根据引用类型解析字段引用,并在运行时基于对象类型解析方法调用(以动态方式)。 即使您自己没有将其 隐式 放置在