相关疑难解决方法(0)

是否有等效于Eval的C/C++("function(arg1,arg2)")?

它需要一种方法来调用函数,其名称存储在类似于eval的字符串中.你能帮我吗?

c++ eval

23
推荐指数
4
解决办法
3万
查看次数

如何使用Mockito模拟受保护的方法?

我正在使用Mockito 1.9.5.如何模拟受保护方法返回的内容?我有这种受保护的方法......

protected JSONObject myMethod(final String param1, final String param2)
{
…
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在JUnit中执行此操作时:

    final MyService mymock = Mockito.mock(MyService.class, Mockito.CALLS_REAL_METHODS);        
    final String pararm1 = “param1”;
    Mockito.doReturn(myData).when(mymock).myMethod(param1, param2);
Run Code Online (Sandbox Code Playgroud)

在最后一行,我得到一个编译错误"方法'myMethod'不可见."我如何使用Mockito来模拟受保护的方法?如果这是答案,我愿意升级我的版本.

junit protected mocking mockito

21
推荐指数
3
解决办法
4万
查看次数

元编程是反射的一个子集吗?

我曾经认为元编程涉及修改程序,并且(对于什么是反射及其为什么有用?)的一些答案,反思仅仅包括对程序的内省.但是,反射标签维基说

反射是程序在运行时可以观察和 修改自身结构和行为的过程.

反思是程序可以执行内省的过程.这种内省通常涉及在运行时观察和修改自身结构和行为的能力.从理论角度来看,反思涉及程序指令作为数据存储的事实.程序代码和数据之间的区别在于如何处理信息.因此,程序可以将自己的代码视为数据并观察或修改它们.

[强调补充]

元编程的描述是

元编程正在编写编写或操纵其他程序作为其数据的程序.

元编程很有用,因为它可以节省程序员宝贵的时间.有些语言支持元编程本身,这允许创建具有强大表现力的代码.

(我认为"写"并不意味着将源代码写入文件,因为这是代码生成.)

这会使元编程只是反射的一个子集吗?

或者这些术语是不同的,因为某些编程语言是由另一种语言元编程的,在这种情况下,元编程会发生而不是反射?(在维基百科元编程文章中有一个未被引用的句子声称这个)

或者"反射"和"元编程"这两个术语的使用方式会有所不同,具体取决于该人使用的编程语言?

reflection terminology metaprogramming

20
推荐指数
1
解决办法
3149
查看次数

从类对象中实例化类

在java中,我可以使用类对象动态实例化该类型的类吗?

即我想要一些像这样的功能.

Object foo(Class type) {
    // return new object of type 'type'
}
Run Code Online (Sandbox Code Playgroud)

java class new-operator

19
推荐指数
1
解决办法
2万
查看次数

在Java/C#等中使用反射有什么用

我只是好奇,我们为什么要首先使用反射

// Without reflection
Foo foo = new Foo();
foo.hello();

// With reflection
Class cls = Class.forName("Foo");
Object foo = cls.newInstance();
Method method = cls.getMethod("hello", null);
method.invoke(foo, null);
Run Code Online (Sandbox Code Playgroud)

我们可以简单地创建一个对象并调用类的方法,但为什么使用forName,newInstance和getMthod函数呢?

让一切变得动态?

theory oop reflection

15
推荐指数
2
解决办法
6905
查看次数

扩展实现Parcelable的类

我有一个类,我们称之为A类,它实现了Parcelable.

我有第二堂课,我们称之为B班,扩展到A班.

我的问题是:

如何将B类成员变量写入Parcel,然后将其父类(即:A类)成员变量写入Parcel(并随后将其读入)?

是否有一些漂亮的技巧,不需要重写A类的包裹代码?或者我只需要在A类中重写Parcel代码并为B类成员变量添加其他代码?

android parcelable

13
推荐指数
1
解决办法
5321
查看次数

如何处理android API低于28的缺口(显示切口)?

Android在API 28上增加了缺口支持,但如何在运行API 27的设备上处理它(荣誉10,华为P20等)?

我试图使用,DisplayCutoutCompat但我无法创建它的实例,因为文档没有真正指出如何创建一个.

如何创建构造函数参数值:Rect safeInsets,List<Rect> boundingRects

我也查看了构造函数的源代码,这对我来说有点混乱:

public DisplayCutoutCompat(Rect safeInsets, List<Rect> boundingRects) {
        this(SDK_INT >= 28 ? new DisplayCutout(safeInsets, boundingRects) : null);
    }
Run Code Online (Sandbox Code Playgroud)

这将始终在运行API <28的设备上返回null .先感谢您.

android android-appcompat android-9.0-pie androidx

12
推荐指数
2
解决办法
6445
查看次数

@autowired注释如何用于私有字段?

如果@Autowired没有getter setter ,注释如何用于私有字段?春天如何进入私人领域?

java spring

11
推荐指数
1
解决办法
2万
查看次数

Java反思和重构的痛苦

Java Reflection提供了一种在运行时对Object进行内省的机制.没有第二个想法,这是一个很棒的功能,但它打破了所有的重构惯例!

File Search即使在现代IDE中也没有简单的方法(除了)以了解哪个属性被引用以及在哪里.这使得Refactorings变得更加复杂(令人厌烦!)并且容易出错.

坦率地说,不只是Reflection API; Hibernate mapping files (hbm.xml)并且JSP files都将属性称为String,当您重构属性名称时,您必须手动更改所有这些位置.

更糟糕的是,Hibernate映射文件或JSP文件中的更改会导致运行时错误.

我很想知道其他程序员如何在Java中处理这个问题.有一些工具吗?我使用Eclipse/IBM RAD作为主要开发平台.通常我们使用a constant来定义属性并尽可能地使用它,但它并不总是可行的.

我也很感兴趣其他语言如何处理这个问题!

java language-agnostic reflection refactoring

10
推荐指数
1
解决办法
2925
查看次数

是否可以在Java中进行猴子修补,如果没有替代方案?

这是8年前在这里被问到的,从那时起已经过了8年.我想再次问这个问题,看看是否有人开发了一个猴子修补的框架,工具或库.

基本上我需要它是一个java应用程序,我应用自己的补丁.由于这个项目由另一个团队维护,我希望能够保留/应用我制作的任何补丁,以及他们制作的补丁.

java monkeypatching

10
推荐指数
2
解决办法
3332
查看次数