标签: method-signature

如何生成方法签名?

期望的输出示例:

(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
(Ljava/lang/String;)Lorg/w3c/dom/Attr;
Run Code Online (Sandbox Code Playgroud)

可以使用javap实用程序生成此类签名:

javap -s -p org.w3c.dom.Node
Run Code Online (Sandbox Code Playgroud)

但有没有办法以编程方式生成它们.我不想手动编写jni规范中的所有规则.

java reflection java-native-interface method-signature

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

我的服务方法签名应该如何?

我正在使用服务层,直到现在我使用了ServiceObject(实现了ArrayAccess,Iterator,Countable),但我想知道这是不是一个好主意.

你会怎么做:

ArticleService::createArticle($articleData, $userId);
Run Code Online (Sandbox Code Playgroud)

要么

ArticleService::createArticle(ServiceObject $data);
Run Code Online (Sandbox Code Playgroud)

在哪里$data:

array(
  'title' => 'Lorem ipsum',
  'body'  => 'Dolor sid amet',
  'userId' => 55,
);
Run Code Online (Sandbox Code Playgroud)

ServiceObject具有为每个方法提供通用签名的好处,但有时它看起来效率不高,并且它没有被广泛使用,它失去了它的兴趣.

任何反馈?

php zend-framework method-signature service-layer

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

我可以命名功能签名吗?

我正在传递部分应用的功能.完整的签名是:

import Data.Map as Map 
-- Update the correct bin of the histogram based on the min value, bin width,
-- the histogram stored as a map, and the actual value we are interested in.
updateHist :: Double -> Double -> Map.Map Bin Double -> Double -> 
              Map.Map Bin Double
Run Code Online (Sandbox Code Playgroud)

该函数更新存储直方图数据的Map.前两个参数给出了我们感兴趣的数据的下限,下一个是直方图的bin宽度.我在程序启动时填写这些值,并在整个模块中传递部分应用的函数.这意味着我有很多功能,签名如下:

-- Extra the data out of the string and update the histogram (in the Map) with it.
doSomething :: String -> (Map.Map Bin Double -> Double -> Map.Map Bin …
Run Code Online (Sandbox Code Playgroud)

haskell method-signature

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

Android studio breadcrumb方法签名

我在Android Studio中寻找像Eclipse这样的Breadcrumb功能.

在Eclipse中,当指针(光标)进入内部时,Breadcrumb显示"方法签名",而在Android Studio中,Breadcrumb则没有任何效果.

请找附件以获得更好的见解.

在此输入图像描述

breadcrumbs method-signature android-studio

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

Perl 6多种方法永远不会匹配预期的签名

我有一个带有两个多方法的类(multi submit)。

我这样称呼我的多重:

$perspective.submit(:message($message.content));
Run Code Online (Sandbox Code Playgroud)

哪个运到我班上:

my $perspective-api = API::Perspective.new(:api-key(%*ENV<PERSPECTIVE_API_KEY>));

proto method submit (|) {*}

multi method submit(Str :$message!, MODEL :@models = TOXICITY) {
    my $score = $perspective-api.analyze(:@models, :comment($message));
    say @models Z=> $score<attributeScores>{@models}.map: *<summaryScore><value>;

multi method submit(Str :$name!, MODEL :@models = TOXICITY) {
    my $score = $perspective-api.analyze(:@models, :comment($name));
    say @models Z=> $score<attributeScores>{@models}.map: *<summaryScore><value>;
}
Run Code Online (Sandbox Code Playgroud)

但是我总是得到以下回应:

Died because of the exception:
    Cannot resolve caller AUTOGEN(Rose::ContentAnalysis::Perspective:D: :message(Str)); none of these signatures match:
        (Rose::ContentAnalysis::Perspective: Str :$message!, MODEL :@models = MODEL::TOXICITY, *%_)
        (Rose::ContentAnalysis::Perspective: …
Run Code Online (Sandbox Code Playgroud)

oop method-signature perl6 multimethod

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

是否可以编写一个将扩展为函数/方法签名的Rust宏?

我希望能够得到以下内容:

macro_rules! impl_a_method(
    ($obj:ident, $body:block) => (
        fn a_method(foo: Foo, bar: Bar, baz: Baz) -> $obj $body
    )
)

// Implementation would look like:

impl_a_method!(MyType, {
    MyType {
        foo: foo.blah(),
        bar: bar.bloo(),
        baz: baz.floozy(),
    }
})
Run Code Online (Sandbox Code Playgroud)

我的真实世界示例包含具有更大签名的方法,我必须以30多种不同类型的独特方式实现这些方法.

我曾尝试与上述类似的宏观的东西,但是我碰到哪里rustc认为的错误foo,bar并且baz在扩展网站未解决的名称(即使我敢肯定,宏声明词汇之前使用).

可以这样做吗?

如果没有,你能推荐一种能达到类似效果的方法吗?

methods macros method-signature rust

9
推荐指数
1
解决办法
4290
查看次数

8
推荐指数
2
解决办法
1494
查看次数

在方法签名/字段中查找不兼容性的工具

我希望能够比较类/库的两个版本,以确定是否有任何可能会破坏调用它的代码的更改.例如,考虑一些在版本a中有方法的类Foo:

public String readWidget(Object widget, Object helper);
Run Code Online (Sandbox Code Playgroud)

在版本b中,该方法变为:

public String readWidget(Object widget); //removed unnecessary helper object
Run Code Online (Sandbox Code Playgroud)

或者在字段的情况下类似的东西:

version a: public static Object sharedFoo;
version b: static Object sharedFoo; //moved to package private for version b
Run Code Online (Sandbox Code Playgroud)

我想要一个工具,将这些变化标记为潜在的不兼容性(但理想情况下不是相反的,即增加方法的可见性).现在我知道我可以通过反射或通过分析javap的输出来做到这一点,但是看起来应该有一个现有的工具(最好是非商业的).所以我想看看是否有人可以推荐一些东西,然后我犯了自己的错误/不必要地重新发明轮子.

java compatibility field method-signature

8
推荐指数
1
解决办法
98
查看次数

方法声明中Generic类型和Object有什么区别?

我很困惑我Signature应该为同样的目的使用哪种方法?两者都适合我.

1.

public <T, J> T findUniqueByCondition(String tableName, 
                                      String key, 
                                      J value, 
                                      Class<T> targetObject);
Run Code Online (Sandbox Code Playgroud)

2.

public <T> T findUniqueByCondition(String tableName, 
                                   String key, 
                                   Object value, 
                                   Class<T> targetObject);
Run Code Online (Sandbox Code Playgroud)

从上面使用哪种方法最佳?我真的很困惑,找不到任何人的优势或劣势?有没有?如果是,请解释.

java generics method-signature

8
推荐指数
1
解决办法
749
查看次数

重载解析,调用哪个方法

假设我有一个ComponentBase班级,谁是 的孩子ObjectContextDecorator和孙子ObjectContext

public class ComponentBase extends ObjectContextDecorator {
}

public class ObjectContextDecorator extends ObjectContext {

    public void set(String objectTypePath, String characteristicName, Object value) {
        //...
    }
}

public class ObjectContext {
    public void set(String characteristicName, Object value, boolean forced) {
       //...
    }
}
Run Code Online (Sandbox Code Playgroud)

和上的set方法非常相似。考虑这个示例代码:ObjectContextDecoratorObjectContext

ComponentBase base = new ComponentBase();
base.set(""OTM4E_EFFLEVEL"", ""IE1 / STD"", true);
Run Code Online (Sandbox Code Playgroud)

两种方法的签名都适合正确调用的方法。我无法更改方法的签名,因为它不是我的代码。

编译器如何知道我打算调用哪个方法?

我知道在 IDE 上您可以指出您实际打算调用哪个方法,但在这种情况下,我使用类加载器来加载一个类,该类具有包含示例代码的方法。

java overloading method-signature

8
推荐指数
1
解决办法
109
查看次数