在PHP 5.3.6中,我注意到以下内容不起作用:
class Foo{
public static $class = 'Bar';
}
class Bar{
public static function sayHello(){
echo 'Hello World';
}
}
Foo::$class::sayHello();
Run Code Online (Sandbox Code Playgroud)
发行unexpected T_PAAMAYIM_NEKUDOTAYIM.但是,使用临时变量会产生预期的结果:
$class = Foo::$class;
$class::sayHello(); // Hello World
Run Code Online (Sandbox Code Playgroud)
有没有人知道这是设计的,还是范围分辨算子如何被标记化的意外结果?任何更清洁的解决方法比后者,临时变量示例?
我在java程序中生成动态类,将所有代码写入java文件,将java文件编译为类文件,然后使用URLClassLoader加载类文件.这个问题是它在我的计算机上创建了很多文件.他们只是通过创建"虚拟文件"(文件对象)而不生成任何实际文件来实现这一点,因为我这样做的方式需要时间并且看起来不干净且效率低下.
我有一个这样的方法:(这是一个通用方法,DYNAMIC_CLASS_TYPE会根据情况更改为其他情况)
Dim res = f.MyMethod(Of DYNAMIC_CLASS_TYPE)("select Id, Name from myTable")
Run Code Online (Sandbox Code Playgroud)
我想根据查询的列创建一个动态类,然后传递类而不是DYNAMIC_CLASS_TYPE.
我怎样才能做到这一点?
我有一个类,例如:
public class Sample{
private String a;
private String b;
public Sample(String a, String b)
{
this.a = a;
this.b = b;
}
public String getA() {return a;}
public String getB() {return b;}
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个从 Sample 类继承的动态类,并向其中添加字段(字符串字段)。
我试图做:
DynamicType.Builder<? extends Sample> classBuilder = new ByteBuddy()
.subclass(Sample.class, ConstructorStrategy.Default.NO_CONSTRUCTORS)
.name("sampleSon");
classBuilder.defineConstructor(Visibility.PUBLIC)
.withParameters(String.class, String.class, String.class)
.intercept(MethodCall.invoke(Sample.class.getConstructor(String.class, String.class))
.withArgument(0, 1)
.andThen(FieldAccessor.ofField("c").setsArgumentAt(2)));
Run Code Online (Sandbox Code Playgroud)
但是当我尝试从这个类创建一个实例时:
Class<? extends Sample> newSampleClass= classBuilder.make().load(ClassLoader.getSystemClassLoader()).getLoaded();
Sample sample = newSampleClass.getConstructor(String.class, String.class, String.class).newInstance("a", "b", "c");
Run Code Online (Sandbox Code Playgroud)
它抛出一个异常:
public class Sample{
private String a;
private String …Run Code Online (Sandbox Code Playgroud) 我在这里有一些使用Vue.js的html:
<div id="app">
<ul class="navbar-nav">
<li class="nav-item" v-for="tab in tabs">
<a href="#" class="nav-link">{{ tab.name }}</a>
</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
我在这里有javascript:
var app = new Vue({
el: '#app',
data: {
tabs: [
{ name: "Home", active: "" },
{ name: "Challenges", active: "active" },
{ name: "Scoreboard", active: "" },
{ name: "About", active: "" }
]
}
});
Run Code Online (Sandbox Code Playgroud)
我想将class设置为tabs.active,因为我正在使用bootstrap.我怎样才能做到这一点?
我有一个字符串,在运行时,它包含我想要实例化的类的名称.我该怎么办?
我读了使用的建议flash.utils.getDefinitionByName():
var myClass:Class = getDefinitionByName("package.className") as Class;
var myInstance:* = new myClass();
Run Code Online (Sandbox Code Playgroud)
但是,这给了我以下错误:
[Fault] exception,information = ReferenceError:错误#1065:未定义变量className.
我正在研究一个问题,其中不同的动物类型从 Animal 接口实现相同的 talk() 方法。
如果你看一下getAnimal()方法,你会发现,当一种新的动物被添加到程序中时,该方法的内部也必须改变。
我想通过对 Animal 进行子类化来添加新动物,而不更改现有类中的任何内容。
例如添加动物“Dog”,criteria="loyal";说话=“汪”。
你能告诉我,这怎么可能?下面是我的代码:
interface Animal {
public void talk();
}
class Lion implements Animal {
@Override
public void talk() {
System.out.println("ROARRRRR");
}
}
class Mouse implements Animal {
@Override
public void talk() {
System.out.println("SQUEEEEEAK");
}
}
class Bison implements Animal {
@Override
public void talk() {
System.out.println("BELLOWWWWW");
}
}
class AnimalType {
public static Animal getAnimal(String criteria) {
// I refactor this method
if (criteria.equals("small")) {
return new Mouse();
} …Run Code Online (Sandbox Code Playgroud) 我正在使用php 5.2.6处理遗留代码库的项目.该项目的一部分涉及类似于使用一个PHP类与另一个PHP类的A/B测试.这两个类具有许多相同的函数名,具有非常相似的签名,但方法中的方法不同.我想知道是否可以使用基于动态/变量的类名称在类中调用静态方法.
例如,id喜欢将类名设置为:
$class = isset($some_condition) && $some_condition ? 'NewClassName' : 'LegacyClassName';
Run Code Online (Sandbox Code Playgroud)
...然后调用函数:
$class::myStaticFunction();
Run Code Online (Sandbox Code Playgroud)
我知道这可以用call_user_func()完成,但我很难找到替代方法(如果有的话).我只是宁愿不用正则表达式用call_user_func()语句替换对遗留类的所有调用.
例如,
$stuff = call_user_func($class . '::myStaticFunction()');
Run Code Online (Sandbox Code Playgroud)
......工作得很好.
有没有人知道是否有更简单的表达方式:$ dynamicClassName :: staticFunction()PHP 5.2?也许我错过了我的语法等等.
我很反思.我需要创建一个继承父类的类.我需要创建一个只读属性.此属性通过传递参数25来调用父类中的现有函数.
一切正常,除了我无法将值25传递给被调用的函数.下面是生成类的代码.请协助.谢谢.
Public Shared Function GetDynamicClass() As Type
Dim asmName As New AssemblyName
asmName.Name = "MyAssm"
Dim asmBuilder As AssemblyBuilder = Thread.GetDomain().DefineDynamicAssembly (asmName, AssemblyBuilderAccess.RunAndSave)
Dim mdlBuilder As ModuleBuilder = asmBuilder.DefineDynamicModule("MyDynModule")
Dim TypeBldr As TypeBuilder = mdlBuilder.DefineType("MyDynClass", TypeAttributes.[Public] Or TypeAttributes.[Class])
TypeBldr.SetParent(GetType(MyParent))
Dim PropertyName As String = ""
Dim PropBldr As PropertyBuilder = Nothing
Dim GetSetAttr As MethodAttributes = Nothing
Dim currGetPropMthdBldr As MethodBuilder = Nothing
Dim currGetIL As ILGenerator = Nothing
Dim mi As MethodInfo = Nothing
PropertyName = "SurveyDate"
PropBldr …Run Code Online (Sandbox Code Playgroud) java ×3
php ×2
reflection ×2
.net ×1
byte-buddy ×1
class ×1
file-io ×1
generics ×1
html ×1
interface ×1
javascript ×1
legacy ×1
vb.net ×1
vue.js ×1
vuejs2 ×1