假设我在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要在内存中替换.
我有这样的 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值设置为constant或env变量来调试/测试?
如果我的术语有误,请原谅.
是否可以在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"?
我有一个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如何才能运行?