小编fsw*_*fsw的帖子

eclipse pdt中的代码完成和工厂模式

假设我在PHP代码中有一个典型的工厂模式:

abstract class Model
{
    function m()
    {
    }
}

class model_A
{
    function a()
    {
    }
}

class model_B
{
    function b()
    {
    }
}

function modelFactory($name)
{
    $className = 'model_' . $name;
    $object = new $className();
    // ... do some magic stuff ...
    return $object;
}
Run Code Online (Sandbox Code Playgroud)

我知道@var和@return phpdoc标签,但在输入之后是否有任何神奇的方法:

$x = modelFactory('A');
Run Code Online (Sandbox Code Playgroud)

Eclipse会知道$ x是model_A的一个实例吗?

我可以在某处定义一个固定的字符串向量,如下所示:

"modelFactory('A')" => "new model_A()"
"modelFactory('B')" => "new model_B()"
Run Code Online (Sandbox Code Playgroud)

在处理代码完成之前,Eclipse要在内存中替换.

php eclipse factory eclipse-pdt code-completion

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

在 chrome 中设置 css constant() 或 env() 变量以进行调试

我有这样的 CSS:

#something {
  top: 0;
  top: constant(safe-area-inset-top);
  top: env(safe-area-inset-top);
}
Run Code Online (Sandbox Code Playgroud)

(改变移动浏览器上的视图)

有没有办法在桌面上的 chrome中将safe-area-inset-top值设置为constantenv变量来调试/测试?

css google-chrome chromium

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

使用D traits获取其实例的模板参数值

如果我的术语有误,请原谅.

是否可以在D编程语言中确定类模板实例中类型参数的值?

请考虑以下类结构:

class Entity {
}

class User : Entity {
}

class Collection(E:Entity) {
}

class UsersCollection : Collection!(User) {
}
Run Code Online (Sandbox Code Playgroud)

现在,有权访问"UsersCollection",我可以确定它是Collection的子类,但我想确定它是什么类型的实体("User")的集合

这是我的实验:

import std.traits;

int main(){

        pragma(msg, BaseTypeTuple!UsersCollection);
        pragma(msg, TransitiveBaseTypeTuple!UsersCollection);
        pragma(msg, BaseClassesTuple!UsersCollection);
        //outputs:
        //(in Collection!(User))
        //(Collection!(User), Object)
        //(Collection!(User), Object)

        pragma(msg, UsersCollection);
        pragma(msg, isInstanceOf!(Collection, UsersCollection));
        //outputs:
        //UsersCollection
        //false

        foreach(BC; BaseClassesTuple!UsersCollection){
            pragma(msg, BC);
            pragma(msg, isInstanceOf!(Collection, BC));
        }
        //outputs:
        //Collection!(User)
        //true
        //Object
        //false

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的BaseClassesTuple的第一个元素!UsersCollection是"Collection!(User)"但是如何从中获取"User"?

templates d traits

4
推荐指数
1
解决办法
168
查看次数

从jar文件中运行特定的类main函数.导入似乎不起作用

我有一个jar文件没有在manifest中指定它的主类.所以我按照这里给出的答案:

如何从Jar运行一个类,它不是Manifest文件中的Main-Class

它似乎试图从这个类运行main.但是,由于某种原因,从这个jar文件中导入其他类似乎已被破坏.

这是我的问题的最小化版本:

jar tf test.jar
Run Code Online (Sandbox Code Playgroud)

得到:

META-INF/
META-INF/MANIFEST.MF
ClassIWantToRun.class
something/
something/something/
something/something/something/ClassA.class
Run Code Online (Sandbox Code Playgroud)

用jd-gui查看的ClassIWantToRun.class的来源似乎是:

import something.something.something.ClassA;

public class ClassIWantToRun
{
    public static void main(String[] args)
    {
        int x = ClassA.comeMethod();
    }
}
Run Code Online (Sandbox Code Playgroud)

运行此:

java -cp test.jar ClassIWantToRun
Run Code Online (Sandbox Code Playgroud)

给了我例外:

Exception in thread "main" java.lang.NoClassDefFoundError: com/ibm/OS4690/FlexosException
    at ClassIWantToRun.main(ClassIWantToRun.java:7)
Caused by: java.lang.ClassNotFoundException: com.ibm.OS4690.FlexosException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    ... 1 more
Run Code Online (Sandbox Code Playgroud)

我只知道Java的基础知识,但似乎即使使用以下行也无法找到ClassA:import something.something.something.ClassA如何才能运行?

java import jar

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