我可以创建一个匿名类型变量,然后再添加更多属性吗?
例如
var x = new { Name = "Ahmed" };,想加入Age它吗?我怎样才能做到这一点?
另一个问题:我在一些博客上看到AnonymousType了这个类的名称空间是什么类型?这是一个例子http://www.codeproject.com/KB/cs/AnonymousTypesInCSharp.aspx
在Java中,我知道可以这样做:
public class Greeter {
public void greetEventually() {
final String greeting = "Hello!";
Job j = new Job() {
public void run() {
System.out.println(greeting);
}
};
j.schedule();
}
}
Run Code Online (Sandbox Code Playgroud)
这将Job在将来的某个时刻执行匿名.这是有效的,因为允许匿名类引用封闭范围中的最终变量.
我不确定的是以下情况:
public class Greeter {
private String greeting;
// ... Other methods that might mutate greeting ...
public void greetEventually() {
Job j = new Job() {
public void run() {
System.out.println(greeting);
}
};
j.schedule();
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我的匿名Job是指封闭类的非final字段.作业运行时,我是否会看到greeting创建作业时的字段值,或者执行作业时的值?我想我知道答案,但我认为这是一个有趣的问题,起初它让我和几个同事再次猜测自己几分钟.
我是匿名课程的新手,今天我想我遇到了第一个案例,我觉得我真的可以使用它们.我正在编写一个方法,可以将临时数据存储在类中,并且因为该类在该方法之外没有任何意义,所以使用匿名类确实对我有意义(至少在它做的时候) ).
在开始编码之后,我肯定会做出一些让步.我喜欢将计算之类的内容分配给临时变量,以便在调试期间我可以在逻辑块中一次验证一些计算.然后我想为最终值分配更简单的东西.该值将在匿名类中.
问题是,为了简明地实现我的匿名类代码,我想使用LINQ.这里的问题是我认为你不能在声明中做这样的临时计算. 或者你呢?
这是我想要做的一个人为的例子:
namespace AnonymousClassTest
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
ObservableCollection<RectanglePoints> Points { get; set; }
public class RectanglePoints
{
public Point UL { get; set; }
public Point UR { get; set; }
public Point LL { get; set; }
public Point LR { get; set; }
}
public class DontWantThis
{
public double Width { get; set; }
public double Height { get; …Run Code Online (Sandbox Code Playgroud) 我可以从匿名类中定义数组或列表吗?
像这样:
persons = new ... []
{
new { ID = 1, Name = "Name1"},
new { ID = 2, Name = "Name2"}
}
Run Code Online (Sandbox Code Playgroud) 我收到错误"抽象方法没有指定一个正文"与下面的代码....
DCWebView.setWebViewClient(new MyWebViewClient() {
@Override
public abstract void launchExternalBrowser(String url) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
}
});
Run Code Online (Sandbox Code Playgroud)
MyWebViewClient是一个抽象类.我想知道上面的代码是做什么的.它显然打算定义类的函数...我可以只在任何代码中new MyWebViewClient() { }定义变量和其他函数吗?
还有什么其他令人敬畏的事情可以在这里完成?
我一直在努力找到一种方法,在Java 1.6中开发类似于Closure的东西,因为我正在为Android开发.
我想要的(在完美的世界中)我有一个课程,我们称之为"项目".
然后我有一个这样的arrayList.
ArrayList<Item> items = new ArrayList<item>;
Run Code Online (Sandbox Code Playgroud)
在每个items.get(x)中我想保存一个在调用时将执行的代码块.这段代码需要在容纳ArrayList项的类的范围内进行.
我唯一的半脑子想法是在类中创建容纳"items"的方法,并在每个"item"实例中保存函数的名称,然后使用reflection来调用这些方法....
我很怀疑这是可能的,但这是我会找到答案的地方.
提前感谢您的帮助.
我有一个匿名类型变量.这个变量来自另一个函数,我们无法改变它.
// var a {property1 = "abc"; property2 = "def"}
Run Code Online (Sandbox Code Playgroud)
我有一节课:
class Myclass{
string property1;
string property2;
}
Run Code Online (Sandbox Code Playgroud)
如何将变量转换a为Myclass类型.我试过了
Myclass b = (Myclass)a;
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
如果我初始化:
Myclass b = new Myclass{
property1 = a.property1,
property2 = a.property2,
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但需要很多代码,因为它MyClass有许多属性
谁能帮我?谢谢你的回答.
使用早期初始化器语法时似乎有一种微妙之处.
trait Base { def callMe = "callMe" }
trait Proxy { this: Base => def call = s"proxied: $callMe" }
val base1 = new Base { } // non-early init works
val baseFail = new { } with Base // error: trait Base is abstract; cannot be instantiated
val base2 = new { val n=1 } with Base // why does this fix the failure?
val proxy = new { } with Base with Proxy // why doesn't this …Run Code Online (Sandbox Code Playgroud) 请查看下面的Java类:
class A {
public void doProcess(){
System.out.println("Process from A class!");
}
}
Run Code Online (Sandbox Code Playgroud)
class B extends A {
@Override
public void doProcess(){
System.out.println("Process from B class!");
}
}
Run Code Online (Sandbox Code Playgroud)
我有2个课程,如上所示.如果我要做以下(匿名课程)
new B() {
@Override
public void doProcess(){
System.out.println("Process from Anonymous class");
}
}
Run Code Online (Sandbox Code Playgroud)
我是否在创建B的新子类?或者它是B的一个实例?
我知道我可以将匿名实现分配给B或A.我不确定是在创建的匿名类的实例上.更多关于Java所做的事情,而不是任何实际目的.我不知道如何让这个匿名内部类的类对象使用一些反射API并自己解决.
IntelliJ是否可以在代码中找到定义匿名类的所有位置?
我只是在寻找而不是改变。我并不是在问要转换为lambda,这与lambda无关。
anonymous-class ×10
java ×5
c# ×4
android ×2
closures ×2
class ×1
collections ×1
linq ×1
mapping ×1
reflection ×1
scala ×1
traits ×1